【问题标题】:Deliberately aborting a Task [duplicate]故意中止任务[重复]
【发布时间】:2015-09-15 10:42:20
【问题描述】:

假设我有一个不包含任何循环的长时间运行的操作,我的意思是该操作的性质是长时间运行,没有任何递归和重复。在这种情况下,如果我使用 CancellationToken 类型抛出取消异常或使用 Boolean 标志“安全地”取消任务,则永远无法到达令牌或标志。

现在唯一的目标是中断正在运行的任务,而不管中止是好的还是坏的方法。使用线程时,存在 abort 方法(我不想讨论它的缺点,因为我已经知道了),但是当涉及到 Task 类型时,我看不到它。假设我的任务必须返回一个值,那么线程就没有问题了。

实现这一点的最安全和最有效的方法是什么。

【问题讨论】:

  • 没有中止方法,因为任务不一定与线程绑定。
  • 这里的上下文是什么?
  • 有点苛刻的解决方案:在另一个AppDomain 中创建Task 并在您必须终止任务时处置该AppDomain? ^^;
  • @Arrrr 这对你来说应该很有趣stackoverflow.com/questions/4359910/…
  • @Arrrr 我们都知道你正在处理任务而不是线程......没有办法中止任务,它们在线程中运行..你需要终止进程或中止主线程不知何故

标签: c# multithreading task


【解决方案1】:

你可以杀死进程,

process.Kill();

无论文档怎么说,都不会承诺取消任务或中止任务。

您可以在线程中启动您的任务,然后使用thread.abort();

恐怕您在这里没有太多选择。为了更确定,您需要提供上下文。

【讨论】:

  • 我已经说过没用了
  • 你没有仔细阅读问题文本
  • 现在更新了.. 用户在我几秒钟内回答后编辑了他的问题
  • 请参考我的这行问题。 And assuming my Task has to return a value, then threads are out of questions.
  • @Arrrr 提供完整的上下文,然后我可以为您提供更好的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 2011-08-26
  • 1970-01-01
  • 2012-11-10
  • 2018-11-14
  • 2021-08-31
  • 1970-01-01
相关资源
最近更新 更多