【发布时间】:2015-03-05 11:33:00
【问题描述】:
我希望在用户单击表单上的按钮时并行启动多个进程,并在每个进程完成时更新同一表单上的列表框。
Process.Exited 事件似乎是我这里的朋友(记得设置EnableRaisingEvents 属性)。我以为我必须使用委托和Control.Invoke 来更新控件,但后来我注意到了Process.SyncronizingObject 属性。
他们的示例实际上并未显示触发事件时正在修改的表单/控件,因此我想确保我理解正确。
如果我将Process.SyncronizingObject 设置为我的Form,这是否意味着我的Process.Exited 事件处理方法可以直接修改表单以及任何子控件?
因此,通过这种方式,我可以在一个简单的 for 循环中运行一堆进程,这些进程将并行运行,并在每个进程完成时更新我的 GUI,而无需任何委托,锁定等?
【问题讨论】:
-
似乎非常容易测试自己。
-
并非如此。我如何从快速测试中知道它是正确的,并且不会导致罕见的难以跟踪的线程错误?很多不好的方法都可以在快速测试中起作用!
标签: c# .net winforms c#-4.0 asynchronous