正在取消已经 运行 个任务

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  
}

这只有在第三方库专门提供取消支持的情况下才有可能。如果是这样,您将需要使用它公开的任何工具(有多种支持它的方法)来取消操作。

如果它本身不支持取消,那么您能做的就是您正在做的最好的事情,即让您的程序继续执行,尽管操作尚未完成。