我对应该在Windows Form应用程序上使用的后台线程实现的选择有一个风格上的问题。目前,我BackgroundWorker
在具有无限(while(true))
循环的表单上。在此循环中,我用于WaitHandle.WaitAny
保持线程休眠,直到发生感兴趣的事情为止。我等待的事件句柄之一是“ StopThread
”事件,因此我可以跳出循环。从我重写时发出此事件信号Form.Dispose()
。
我读过某个地方,该地方BackgroundWorker
实际上是您不希望将UI与之捆绑在一起并具有有限结局的操作-例如下载文件或处理一系列项目。在这种情况下,“结束”是未知的,只有在关闭窗口时才知道。因此,对我而言,使用后台线程而不是BackgroundWorker
为此目的更合适吗?