Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 故意中止任务_C#_Multithreading_Task - Fatal编程技术网

C# 故意中止任务

C# 故意中止任务,c#,multithreading,task,C#,Multithreading,Task,假设我有一个不包含任何循环的长时间运行的操作,我的意思是该操作的本质是长时间运行的,没有任何递归和重复。在这种情况下,如果我使用CancellationToken类型抛出取消异常,或使用Boolean标志“安全”取消任务,则永远无法到达该标记或标志 现在唯一的目标是中断正在运行的任务,而不管中止是好方法还是坏方法。在使用线程时,存在abort方法(我不想讨论它的缺点,因为我已经意识到了),但是在任务类型方面,我没有看到它。假设我的任务必须返回一个值,那么线程就没有问题了 实现这一点最安全、最有效

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

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


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

您可以终止进程

process.Kill();
无论文档怎么说,都不会承诺取消任务或中止任务

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

恐怕您在这里没有太多选择。更确切地说,您需要提供上下文


没有中止方法,因为任务不一定与线程绑定。这里的上下文是什么?有点苛刻的解决方案:在另一个
AppDomain
中创建
Task
,并在必须终止任务时处理该
AppDomain
@Arrrr这对你来说应该很有趣@Arrrr我们都知道你的任务不是线程。。。无法中止任务,它们在线程中运行。。您需要终止进程或中止主线程,我已经提到了,这是没有用的。您没有仔细阅读问题文本,现在更新了它。。在我第二次回答之后,用户编辑了他的问题。请参考我问题的这一行<假设我的任务必须返回一个值,那么线程就没有问题了
@Arrrr提供完整的上下文,我将能够为您提供更好的答案