我不知道如何在不使用額外線程或await
和async
關鍵字但僅包含任務的情況下完成以下程序的相同操作。示例代碼會很棒。在我看來,我們需要使用TaskCompletionSource
和Async
版本的IO綁定操作或任何長時間運行的操作。如何在沒有新線程或異步且僅等待關鍵字的情況下獲得轉換任務
static void Main(string[] args)
{
Task t = Go();
Console.WriteLine("Hello World");
Task.Delay(1000).GetAwaiter().OnCompleted(() => { Console.WriteLine("Completed"); });
Console.ReadLine();
}
static async Task Go()
{
var task = PrintAnswerToLife();
await task;
Console.WriteLine("Done");
}
static async Task PrintAnswerToLife()
{
var task = GetAnswerToLife();
int answer = await task;
Console.WriteLine(answer);
}
static async Task<int> GetAnswerToLife()
{
var task = Task.Delay(2000);
await task;
int answer = 21 * 2;
return answer;
}
請檢查http://channel9.msdn.com/Events/Build/BUILD2011/TOOL-829T這不是一件容易的事 – zahir
@zahir看起來不錯的鏈接。謝謝一堆。 – Tarik