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