【问题标题】:Threading and checking for a 'stop' [duplicate]线程和检查“停止”[重复]
【发布时间】:2011-04-20 14:00:32
【问题描述】:

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

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

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

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

我不拘泥于任何特定的线程实现,所以我愿意提供建议

【问题讨论】:

  • 请避免在此处使用“中止”一词。你的方法很好,很好。 Thread.Abort() 很危险。

标签: c# multithreading


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多