正在取消已经 运行 个任务
Cancelling a already running task
我在执行如下两个任务之间有时间。如果 timeoutTask 先完成,我想取消(或杀死)workerTask,有没有办法这样做?
var timeoutTask = Task.Delay(1500);
var workerTask = Task.Run(() => { ThirdPartLibraryAPI.Run() });
var taskThatCompletedFirst = await Task.WhenAny(timeoutTask, workerTask);
//stuff to do on timeout can be done here
if (taskThatCompletedFirst == timeoutTask)
{
// At this point workerTask is still running.
// how can i cancel or kill this task
}
这只有在第三方库专门提供取消支持的情况下才有可能。如果是这样,您将需要使用它公开的任何工具(有多种支持它的方法)来取消操作。
如果它本身不支持取消,那么您能做的就是您正在做的最好的事情,即让您的程序继续执行,尽管操作尚未完成。
我在执行如下两个任务之间有时间。如果 timeoutTask 先完成,我想取消(或杀死)workerTask,有没有办法这样做?
var timeoutTask = Task.Delay(1500);
var workerTask = Task.Run(() => { ThirdPartLibraryAPI.Run() });
var taskThatCompletedFirst = await Task.WhenAny(timeoutTask, workerTask);
//stuff to do on timeout can be done here
if (taskThatCompletedFirst == timeoutTask)
{
// At this point workerTask is still running.
// how can i cancel or kill this task
}
这只有在第三方库专门提供取消支持的情况下才有可能。如果是这样,您将需要使用它公开的任何工具(有多种支持它的方法)来取消操作。
如果它本身不支持取消,那么您能做的就是您正在做的最好的事情,即让您的程序继续执行,尽管操作尚未完成。