我有一个风格上的问题,关于我应该在 Windows 表单应用程序中使用的后台线程实现的选择。目前,我有一个 BackgroundWorker
的形式,有一个无限的 (while(true))
循环。在这个循环中,我使用 WaitHandle.WaitAny
保持线程处于休眠状态,直到发生感兴趣的事情。我等待的事件句柄之一是“ StopThread
”事件,这样我就可以跳出循环。这个事件是从我覆盖的 Form.Dispose()
发出的信号。
我在某个地方读到过,BackgroundWorker
实际上是用于那些你不想绑定 UI 的操作,并且有一个有限的结尾——比如下载一个文件,或者处理一系列的项目。在这种情况下,只有当窗口关闭时,“ end”才是未知的。因此,是否更适合我使用一个背景线程,而不是 BackgroundWorker
为此目的?