【发布时间】:2009-08-14 22:39:07
【问题描述】:
是的,我的应用程序偶尔会启动一个后台线程来做一些事情。
在做它的工作时,它还会更新主窗口上的进度条。它通过调用 Invoke 来让主线程更新接口来做到这一点。
当用户关闭应用程序时,我想等到所有后台线程都完成后再关闭表单。在表单关闭事件中,我有类似
while ( this._Queue.Count > 0 )
Application.DoEvents ();
但这不起作用!!
后台线程卡在 Invoke 调用上。主线程继续循环调用它的 DoEvents,我认为这就是它需要做的所有事情来获取和处理它的调用。但它不是这样做的......
为什么不!?!
【问题讨论】:
-
嗨,你把这段代码放在主窗体关闭事件的什么地方?最好的问候,约旦
-
是的,它在主窗体 form_closing 事件中。
标签: c# .net multithreading