【发布时间】:2015-09-15 10:42:20
【问题描述】:
假设我有一个不包含任何循环的长时间运行的操作,我的意思是该操作的性质是长时间运行,没有任何递归和重复。在这种情况下,如果我使用 CancellationToken 类型抛出取消异常或使用 Boolean 标志“安全地”取消任务,则永远无法到达令牌或标志。
现在唯一的目标是中断正在运行的任务,而不管中止是好的还是坏的方法。使用线程时,存在 abort 方法(我不想讨论它的缺点,因为我已经知道了),但是当涉及到 Task 类型时,我看不到它。假设我的任务必须返回一个值,那么线程就没有问题了。
实现这一点的最安全和最有效的方法是什么。
【问题讨论】:
-
没有中止方法,因为任务不一定与线程绑定。
-
这里的上下文是什么?
-
有点苛刻的解决方案:在另一个
AppDomain中创建Task并在您必须终止任务时处置该AppDomain? ^^; -
@Arrrr 这对你来说应该很有趣stackoverflow.com/questions/4359910/…
-
@Arrrr 我们都知道你正在处理任务而不是线程......没有办法中止任务,它们在线程中运行..你需要终止进程或中止主线程不知何故
标签: c# multithreading task