我有一个工作线程作一些后台的事情。 我的需求是在工作线程结束后由主线程接着作一些后续的工作。由于主线程还要处理UI上的操作所以不能用Join()方法一直等待工作线程结束。大家在遇到这种情况的时候都用什么方法解决两个线程间的通讯问题?

解决方案 »

  1.   

    怎么用delegate?如果工作线程调用的话不是一样还是在工作线程中执行的?
      

  2.   

    public class DoTask

       public event DoTaskDelegate Callback;
       public void Start(object o)
       {
           // do something
           Callback("");
       }
    }
    public delegate void DoTaskDelegate(object o);=======================================================
    private void buttun1_click(object sender,EventArgs e)
    {
       DoTask dt = new DoTask();
       dt.Cllback += new DoTaskDelegate(this.MessageHandler);
       Thread t = new Thread(new ParameterizedThreadStart(dt.Start));
       t.Start(null);
    }
    private void MessageHandler(object o)
    {
        
    }
      

  3.   

    你在Start()中调用Callback()的时候会调用到MessageHandler(),但是仍然是在工作线程中执行的MessageHandler()吧。我希望的是在工作线程结束后在主线程中执行MessageHandler(),也就是button1_click()的那个线程执行MessageHandler()
      

  4.   

    两位说的是Control.Invoke()吧,可我的主线程中没有任何窗口,该怎么办?
      

  5.   

    AutoResetEvent会使当前线程阻塞在那里吧