C# 故意中止任务
假设我有一个不包含任何循环的长时间运行的操作,我的意思是该操作的本质是长时间运行的,没有任何递归和重复。在这种情况下,如果我使用C# 故意中止任务,c#,multithreading,task,C#,Multithreading,Task,假设我有一个不包含任何循环的长时间运行的操作,我的意思是该操作的本质是长时间运行的,没有任何递归和重复。在这种情况下,如果我使用CancellationToken类型抛出取消异常,或使用Boolean标志“安全”取消任务,则永远无法到达该标记或标志 现在唯一的目标是中断正在运行的任务,而不管中止是好方法还是坏方法。在使用线程时,存在abort方法(我不想讨论它的缺点,因为我已经意识到了),但是在任务类型方面,我没有看到它。假设我的任务必须返回一个值,那么线程就没有问题了 实现这一点最安全、最有效
CancellationToken
类型抛出取消异常,或使用Boolean
标志“安全”取消任务,则永远无法到达该标记或标志
现在唯一的目标是中断正在运行的任务,而不管中止是好方法还是坏方法。在使用线程时,存在abort方法(我不想讨论它的缺点,因为我已经意识到了),但是在任务类型方面,我没有看到它。假设我的任务必须返回一个值,那么线程就没有问题了
实现这一点最安全、最有效的方法是什么 您可以终止进程
process.Kill();
无论文档怎么说,都不会承诺取消任务或中止任务
或
您可以在线程中启动任务,然后使用thread.abort()代码>
恐怕您在这里没有太多选择。更确切地说,您需要提供上下文
没有中止方法,因为任务不一定与线程绑定。这里的上下文是什么?有点苛刻的解决方案:在另一个AppDomain
中创建Task
,并在必须终止任务时处理该AppDomain
@Arrrr这对你来说应该很有趣@Arrrr我们都知道你的任务不是线程。。。无法中止任务,它们在线程中运行。。您需要终止进程或中止主线程,我已经提到了,这是没有用的。您没有仔细阅读问题文本,现在更新了它。。在我第二次回答之后,用户编辑了他的问题。请参考我问题的这一行<假设我的任务必须返回一个值,那么线程就没有问题了
@Arrrr提供完整的上下文,我将能够为您提供更好的答案