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();
}
控制檯顯示 「仍在工作」。我認爲這項任務會被取消。
我相信我錯過了一些東西。我錯過了什麼?謝謝。