3
我有以下代碼:異步 - 等待 - 線程預期
static void Main(string[] args)
{
Run1();
Run2().Wait();
}
static async Task DoAsyncWork()
{
await Task.Delay(2000);
}
static async Task Run2()
{
var tid = Thread.CurrentThread.ManagedThreadId;
await DoAsyncWork();
Console.WriteLine(tid == Thread.CurrentThread.ManagedThreadId);
}
static void Run1()
{
var tid = Thread.CurrentThread.ManagedThreadId;
DoAsyncWork().Wait();
Console.WriteLine(tid == Thread.CurrentThread.ManagedThreadId);
}
會有怎樣的輸出:
有時候真有時候假的。
真
假
假
真
有時候真有時候假的。
真
真
我覺得3是正確的答案,但是當我運行代碼的所有時間我得到:
真
假
我知道爲什麼第一次印刷是真的,但任何人都可以解釋爲什麼什麼時候我運行的代碼總是我得到假? (我如何在第二次印刷中獲得True)
謝謝!
你如何期待它回到第一個線程? – SLaks