c# – 我可以停止System.Threading.Timer
发布时间:2020-12-15 18:14:22 所属栏目:百科 来源:网络整理
导读:我有一个应用程序,它使用计时器偶尔在辅助线程上运行监视任务.其中一些清理任务需要花费大量时间,我希望能够在用户结束程序时中止这些任务(如果可能的话,优雅地). 是否有任何方法可以使用Thread.Abort()以编程方式中止线程,或者我是否必须在代码中添加一个标
我有一个应用程序,它使用计时器偶尔在辅助线程上运行监视任务.其中一些清理任务需要花费大量时间,我希望能够在用户结束程序时中止这些任务(如果可能的话,优雅地).
是否有任何方法可以使用Thread.Abort()以编程方式中止线程,或者我是否必须在代码中添加一个标志以指示线程已完成并在启动的代码中的有害位置检查通过计时器? 解决方法
没有办法知道Threading.Timer回调将提前运行的Thread.因此,没有一般的方法可以中止它.可以让回调本身传递Thread实例,但它会打开几个竞争条件
注意:通常使用Abort是一种不好的做法.这是一种相当可靠的方法,最终难以检测到死锁和/或资源泄漏.使用像CancellationToken这样的被动机制要好得多 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |