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が正解だと思いますが、私はすべての時間を、コードを実行したときに私が得る
真:
偽
真
私は最初のプリントが本当の理由を知っていますが、私はコードを常に実行します。私はFalseになりますか? (どのように私は2番目のプリントで真を得ることができますか?)
ありがとう!
どのように最初のスレッドに戻ってくると思いますか? – SLaks