join的意思我理解了,就是堵塞当前主进程去执行新进程。但是我现在有个疑问,我启动两个线程就是防止程序假死在那里的,开个新线程去读取设备,但是有可能这个设备根本没有连接,也就是说新线程会卡在那,那是不是我的程序又假死了?不知道大家能不能看懂。

解决方案 »

  1.   

    主线程也会阻塞?
    catch?防止假死可以这样啊
    比如:
    private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                BackgroundWorker backgroundWorker = sender as BackgroundWorker;
                Execute(backgroundWorker, e);
            }线程启动用
    if (!backgroundWorker1.IsBusy)
                        backgroundWorker1.RunWorkerAsync();那么增加东西的时候就可以对窗体进行操作。
      

  2.   


    UI 线程里join 那两个连接设备的子线程,UI就会卡死...
      

  3.   

    子线程回调就是:让子线程来通知UI是否完成,而不是UI等着子线程。
    可以用 Delegate.BeginInvoke,传入callback delegate,
    或者用 .net 4.0 ATP 的 async,await直接转化成 Event based Async Pattern只要UI等子线程完成,就一定会挂死。