如果用户希望中断执行,我需要有另一个线程信号,但是我不确定如何实现信令/信号检查机制.我不想在我的项目中有一个单身人士(比如全球bool
),但还有其他选择吗?
在这个帖子中,人们在C++中建议适当的结构,但我不知道.NET中有类似的东西.有人可以解释一下吗?
试试BackgroundWorker.它支持进度更新和正在运行的任务的取消.
如果你想让一个线程等到另一个线程完成它的事情,那么Monitor.Wait和Monitor.Pulse都是好的,就像ManualResetEvent一样.但是,这些对于取消正在运行的任务并没有任何用处.
如果你想编写自己的取消代码,你可以在两个线程都可以访问的地方找到一个字段.将其标记为易变,例如:
private volatile bool cancelling;
让主线程将其设置为true,并让工作线程定期检查它并在完成后将其设置为false.
这与具有"全局变量"并不具有可比性,因为您仍然可以将信号量变量的范围限制为对类是私有的.
有点模糊(缺少时间),但请查看ManualResetEvent和AutoResetEvent.您还可能需要查找Monitor和lock关键字.