急!关于多线程完成工作后做出事件响应问题,请高手大哥们帮帮我!
有这样一个工作,他会不断接收工作指令去完成一项子工作,由于子工作可能要很长时间才能完成,在这段时间中他可能还会接收去完成其他工作的指令。所以我打算每接收一个子工作指令,就为他另开一个线程。
但问题是我希望每一项子工作完成,也就是线程的工作完成时能给主程序即时响应一个消息,来报道一些处理的信息情况。我想用事件的方式来完成报道,就是每项子工作完成便激发一个事件,由主程序来接受并处理事件。
但我想了很久也不知道应该怎么去做,那位大哥可以帮帮我啊!!!!!
问题点数:100、回复次数:3Top
1 楼saucer(思归)回复于 2005-09-06 08:28:33 得分 60
有几种方法,一种是用Delegate,用BeginInvoke调用你的方法,然后用CallBack的方式回调,另一种是通过Invoke调用主线程的方法,还有一种方法是用ManualResetEvent什么的对象,但主线程需要对此对象做某种等待,建议参考Chris Sells在MSND上的关于多线程的方法
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms06112002.aspTop
2 楼farrio(独孤求胜)回复于 2005-09-06 09:20:14 得分 40
我也遇到了这样的问题,就是子线程无法直接raiseevent出来。我使用了winform上面控件的异步委托方法,改变了一个隐藏得textbox的值,然后通过textchanged来实现的。反正不是什么好办法。Top
3 楼lixy456(江湖大虾)回复于 2005-09-06 12:32:25 得分 0
谢谢大家,我去试一试
Top




