在C#中取消任务

时间:2018-07-16 09:55:34

标签: c# task-parallel-library

我在用C#编程的引擎工作,该引擎创建并执行.NET 4.5任务。 在这些任务中,代码是从不同的API执行的。其中之一就是表格对象模型(TOM)。

我希望能够取消正在运行的任务,而我的问题是我在任务内调用的TOM函数无法接收CancellationToken。

此处的代码:

Task t = Task.Run( () => 
{
   // may check cancelation token status before 

   TomApi.CallSomeMethod(); // cannot abort this very call

   // may check cancelation token status after 
});

所以我的问题是,当某些用户想要取消正在运行的Task t时,我无法对其调用取消。

对于支持async的方法,我这样做是这样的:

Task t = Task.Run( () => 
{
   TomApi.CallSomeMethodAsync(token);
});

我也知道我可以检查代码中的CancelationToken状态,但是我的意思是任务中的调用已经在运行,并且我只能在该函数调用之前或之后检查该状态

0 个答案:

没有答案