线程和检查“停止”

时间:2011-04-20 14:00:33

标签: c# multithreading

  

可能重复:
  Killing a thread (C#)

我有一个程序,当启动时会产生一个线程,线程主进程执行一些相当多的方法调用。

产生线程的父类需要能够将线程设置为中止(或停止),并且线程需要优雅地停止并清理/恢复它所做的更改。

除了设置volatile bool并检查它是否已在生成的off线程进程中设置之外,是否有一种很好的方法可以中止/停止线程?线程的进程调用了许多方法,可能需要数小时,因此检查每个方法调用都有点乏味。

我没有坚持任何特定的线程实现,所以请求建议

1 个答案:

答案 0 :(得分:4)

如果你在.NET 4中使用TPL或者使用Rx Extensions提供的.NET 3.5的后端版本,你可以使用cooperative cancellation系统,它改进了经典的布尔标志系统处理边界情况,例如取消多个并行任务,在取消的情况下允许继续逻辑,并且随着框架的发展,支持对本机支持新的取消模型的新BCL功能的前向支持。它还将取消器与正在取消的任务分离,以便您可以控制哪些代码具有取消权限。