两个线程:td1,td2
td1首先执行且一直循环执行,但是执行td1要消耗大量的时间,td1结束后产生数据文档。
td2要等待td1执行完产生数据文档并调用td1产生的文档
由于td1要消耗大量时间,软件不得不sleep较长时间,这样造成软件界面的假死状态....
请问各位有什么好的办法可以避免这种界面假死状态....有代码示例最好....
感谢各位了
td1首先执行且一直循环执行,但是执行td1要消耗大量的时间,td1结束后产生数据文档。
td2要等待td1执行完产生数据文档并调用td1产生的文档
由于td1要消耗大量时间,软件不得不sleep较长时间,这样造成软件界面的假死状态....
请问各位有什么好的办法可以避免这种界面假死状态....有代码示例最好....
感谢各位了
还要一个控制线程
一个工作线程控制线程启动工作线程, 根 UI 线程交互, 循环 wait 一个 event 一定时间,
向 UI 线程报告进度,
工作线程工作完毕后触发那个 event, 控制线程接收到, 得以结束.
void doSomething()
{
//调用td1
}
void btn_clicked(object sender Eventargs e)
{
VoidDelegate d = new VoidDelegate(doSomething);
this.Invoke(d);
}
控件就不会假死了.
我在下面的文章中提供了详细的代码实例和实现原理分析。
使用BackgroundWorker组件进行异步操作编程
http://blog.csdn.net/zhzuo/archive/2008/07/23/2699305.aspx如果楼主觉得还有更好的处理方式,很高兴交流。