遇到这样的问题,在wpf的main thread(UI thread)里面要启动一个process,这个process可能要花》10分钟的时间,于是就用了另外一个线程T2做这个工作,然后main thread再去做其他事情(比如响应其他输入)。 问题是如何在T2中的process结束时候向main thread发出请求,然后main thread 再做后继的处理工作(比如输出process的返回值)?比如
public class Window1:Window
{
    onButtonRunclick()
   {
       start thread2
    }
.....
}thread2
{
    create/init WorkProcess.
    WorkProcess.start();
    WorkProcess.waitforexit(); // Can last 30 mins...
    int error = WorkProcess.ExitCode;
}或者干脆能不能取消thread2, 在workProcess()的exit事件里面向main UI 发送一个进程间
消息来通知一下?谢谢各位大侠

解决方案 »

  1.   

    在WinForm中经常遇到一些费时的操作界面,比如统计某个磁盘分区的文件夹或者文件数目,如果分区很大或者文件过多的话,处理不好就会造成“假死”的情况,或者报“线程间操作无效”的异常,为了解决这个问题,可以使用委托来处理,在.net2.0中还可以用BackgroundWorker类。BackgroundWorker类是.net 2.0里新增加的一个类,对于需要长时间操作而不需要用户长时间等待的情况可以使用这个类。 注意确保在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 RunWorkerCompleted 事件与用户界面进行通信。http://blog.csdn.net/zhoufoxcn/archive/2007/10/19/1832819.aspx看看这篇文章。
      

  2.   

    你可以用INVOKE···写个回调函数··在回调函数里面处理···