我要对一个Tree Control的OnSelChange事件进行处理,其中需要一个线程来做一些数量重复次数比较多的工作.但存在一个问题:在Tree Control的Item两次改变时对线程函数进行控制.
但如何去结束前一个线程函数,开始另一个线程?
我的方法是事先产生一个牌暂停的状态.当一个SelChange事件发生时就将线程暂停,等改变好相关的参数后再重启该线程.
但好像不太行.请问有什么好的方法??

解决方案 »

  1.   

    最好结束该线程,就算你暂停它也可能拥有对Tree Control的占有
      

  2.   

    声明一个变量做为标志, 实始化为 FALSE:BOOL bStop = FALSE;
    BOOL bStart = FALSE;线程处理 ITEM 的代码这么写:
    while(GetMessage(.....)) //等待消息, 得到通知后立即启动运行.
    {
      while(!bStop)
      {
          GetNextItem
          HandleItem
      }
      PostMessage(...)//通知主线程, 我退出处理循环了.
    }选择事件发生时, 这么写:bStop= TRUE;
    GetMessage(......) //等待工作线程退出处理循环.
    //做一些初始化工作....
    PostMessage(......) //通知工作线程开始处理.另外: 最好是用事件对象来处理线程间通信, 同步