c# – 我可以停止System.Threading.Timer

前端之家收集整理的这篇文章主要介绍了c# – 我可以停止System.Threading.Timer前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个应用程序,它使用计时器偶尔在辅助线程上运行监视任务.其中一些清理任务需要花费大量时间,我希望能够在用户结束程序时中止这些任务(如果可能的话,优雅地).

是否有任何方法可以使用Thread.Abort()以编程方式中止线程,或者我是否必须在代码添加一个标志以指示线程已完成并在启动的代码中的有害位置检查通过计时器?

解决方法

没有办法知道Threading.Timer回调将提前运行的Thread.因此,没有一般的方法可以中止它.可以让回调本身传递Thread实例,但它会打开几个竞争条件

注意:通常使用Abort是一种不好的做法.这是一种相当可靠的方法,最终难以检测到死锁和/或资源泄漏.使用像CancellationToken这样的被动机制要好得多

猜你在找的C#相关文章