线程不适合于你。既然你在思想上就以为“主窗体应该要等待”,你还搞线程干什么呢?这种代码一看就知道,WaitAll 堵塞着(而且前边的Sleep根本毫无意义),那不是跟根本不用 Task 的程序一样嘛。只要是你“一张口”就是“窗体等待.....”,那么这里去考虑时髦的“线程”就永远也不适合于你。线程的作用就在于并发执行,然后当完成之后,将结果在窗体上展现。

解决方案 »

  1.   

    在主线程中,我需要等待tsk1线程运行结束后,再继续后面的代码这就好比领导说:我要等员工工作完了,再继续自己的工作.然后就站在员工身后盯着他看
    这样有什么意义?你应该给线程注册回调函数,等线程执行完毕了,主线程执行这个回调函数(搜委托)这就好比领导给员工分配完任务,自己该干嘛干嘛去,然后等员工干完了来汇报.而不是在那里干等
      

  2.   

    谢谢楼上二位指点,我程序有这样的需求,我需要实时监测多个外设,外设是个测试装置,用来测试产品的多项参数,并将测试数据实时发给PC,而PC需要立即将数据展现出来。在测试完成后,将数据统计,保存等等。
    所以我想开多个线程,来监测外设,主线程等检测完成后,再处理所有数据。
      

  3.   

     Task.start 就好 不要waitall 
      

  4.   

    你应该用ContinueWith执行后续代码,而不是通过Wait
      

  5.   

    用一个Task集合监测你的设备,然后用ContinueWith执行后续代码,而不是用主线程去等待