[英]How to properly use Task.ContinueWith?
嘗試測試TPL時遇到一個簡單的問題。 我想在控制台窗口中獲取數字(從1到1000)。
這是我的代碼:
class Program
{
static void Main(string[] args)
{
Task.Factory.StartNew(Calculate).ContinueWith(task =>
{
Task.WaitAll();
Console.ReadKey();
});
}
private static void Calculate()
{
for (var number = 0; number < 1000; number++)
{
Console.WriteLine(number);
}
}
}
問題在於窗口只是關閉而沒有顯示任何內容。 我知道我在ContinueWith方法中搞砸了。 我懷疑ContinueWith沒有執行(因為窗口只是在沒有我輸入的情況下關閉),但我不知道為什么。
任何建議都是有幫助的(嘗試閱讀MSDN但無濟於事)。 提前致謝。
繼續異步運行。 如果您進行一些測試:
public static void Main(string[] args)
{
Task.Factory.StartNew(Calculate).ContinueWith(task =>
{
Console.WriteLine("Finished!");
});
Console.WriteLine("Press ENTER to close...");
Console.ReadLine();
}
你會看到的
按ENTER鍵關閉...
1個
2
3
...
999
完蛋了!
因為延續不會受阻。
如果要阻止主執行線程等待任務,可以執行以下操作:
var task = Task.Factory.StartNew(Calculate);
task.Wait();
並且它將在Wait
阻塞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.