我在用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
状态,但是我的意思是任务中的调用已经在运行,并且我只能在该函数调用之前或之后检查该状态>