У меня есть следующий код:Асинхронный - ждут - нить ожидается
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, но каждый может объяснить мне, почему я запускаю код всегда, я получаю False? (как я могу получить True во второй печати?)
Thank!
Как вы ожидаете, что он вернется к первому потоку? – SLaks