当前位置:  开发笔记 > 编程语言 > 正文

使线程在.NET中发出另一个线程信号的最佳方法是什么?

如何解决《使线程在.NET中发出另一个线程信号的最佳方法是什么?》经验,为你挑选了2个好方法。

如果用户希望中断执行,我需要有另一个线程信号,但是我不确定如何实现信令/信号检查机制.我不想在我的项目中有一个单身人士(比如全球bool),但还有其他选择吗?

在这个帖子中,人们在C++中建议适当的结构,但我不知道.NET中有类似的东西.有人可以解释一下吗?



1> Matt Howells..:

试试BackgroundWorker.它支持进度更新和正在运行的任务的取消.

如果你想让一个线程等到另一个线程完成它的事情,那么Monitor.Wait和Monitor.Pulse都是好的,就像ManualResetEvent一样.但是,这些对于取消正在运行的任务并没有任何用处.

如果你想编写自己的取消代码,你可以在两个线程都可以访问的地方找到一个字段.将其标记为易变,例如:

private volatile bool cancelling;

让主线程将其设置为true,并让工作线程定期检查它并在完成后将其设置为false.

这与具有"全局变量"并不具有可比性,因为您仍然可以将信号量变量的范围限制为对类是私有的.



2> Statement..:

有点模糊(缺少时间),但请查看ManualResetEvent和AutoResetEvent.您还可能需要查找Monitor和lock关键字.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有