10
我有一个任务,如果等待时间结束,我需要取消。例如取消任务
var t = Task.Factory.StartNew(() =>
{
Thread.Sleep(5000) // some long running task
"do something"
});
Task.WaitAll(new[] {t}, 1000);
但似乎任务仍然继续工作。我尝试使用CancellationTokenSource,但似乎没有工作。
我证实了这一点通过下面的代码片断
static void Main(string[] args)
{
var cancellationTokenSource = new CancellationTokenSource();
var t = Task.Factory.StartNew(() => {
Thread.Sleep(5000);
Console.WriteLine("Still working");
}, cancellationTokenSource.Token);
Task.WaitAll(new[] {t}, 1000);
cancellationTokenSource.Cancel();
Console.ReadLine();
}
控制台显示 “仍在工作”。我认为这项任务会被取消。
我相信我错过了一些东西。我错过了什么?谢谢。