终止线程的好方法(没有Thread.Abort)

时间:2014-11-20 23:27:58

标签: c# multithreading terminate abort

我在很多地方读过,我应该远离Thread.Abort。并且学到了很难的方法(它似乎在Mono上具有相当平台依赖的行为):))

那么从外部终止线程的好/优雅方式是什么?

我知道我可以添加这样的代码:

if (terminateRequested) return;

或更好

if (terminateRequested) throw new MyTerminateThreadException();

但是在现实世界的情况下,线程代码分布在多个C#文件中,很快就会变成烦人且重复的模式。

线程处于休眠状态,等待服务器连接,互斥锁或执行不是我的代码的情况如何?你是如何处理这些的?

1 个答案:

答案 0 :(得分:1)

我认为Mono有Task class available。我建议使用CancellationToken查看。查看此Task Cancellation页面,以便更好地了解执行线程并取消它。