怎么让子线程结束后继续主线程?
一个界面程序中的一段: 大意这样
string[] data;
ThreadStart start = new ThreadStart(ana0);
Thread download = new Thread(start);
download.Start(); //启动一个网页下载的线程,时间未知,下载数据保存到data里
ThreadStart start2 = new ThreadStart(ana1);
Thread download2 = new Thread(start2);
download2.Start();//做个多线程吧
//这里应该怎么写?
fenxi(data);//分析data的数据
为了让系统UI不死掉,我不能在fenxi前面轮询查看线程是否结束,那我应该怎么让线程结束了以后自动启动fenxi(data)?
------解决方案--------------------应该可用,参考:
http://www.ryanvice.net/wpf-3-5/using-backgroundworker-with-wpf/
------解决方案--------------------
------解决方案--------------------不要纠结于“继续主线程”这个词儿!
你的fenxi方法不一定执行在哪一个线程中,完全可以使用某一个download所使用的线程。假设你之前的观念就是“一定要在主线程中执行”,那么就纠结了。
实际上,任何计算工作都无需主线程去执行(当然无不是说就必须使用子线程)。如果你这样去设计程序,就可以选择最为恰当的流程。
------解决方案--------------------使用事件吧,每个子线程的运行进度(该子线程一共需要下载多少内容,已经下载了多少内容等)全部通过事件反馈出来,
然后在主线程中绑定此事件即可,具体代码可参考事件使用方法