#c# #.net #multithreading #multitasking
Вопрос:
Как просит комментарий к коду. Я не знаю, почему основной поток ждет «продолжения.Результат» имел значение до того, как распечатать его значение.
static void Main(string[] args)
{
Task<string> antecedent = Task.Delay(5000).ContinueWith<string>(x =>
{
Console.WriteLine("return in task1 {0}", Thread.CurrentThread.ManagedThreadId);
return DateTime.Today.ToShortDateString();
});
Task<string> continuation = antecedent.ContinueWith(x =>
{
x.Wait(1000);
Console.WriteLine("return in task2 {0}{1}",Thread.CurrentThread.ManagedThreadId,x.Status);
return "Today is " antecedent.Resu<
});
Console.WriteLine("this will print before the result");
Console.WriteLine(continuation.Result); //why this waiting ?
Console.ReadKey();
}
Ответ №1:
Я не знаю, почему основной поток ждет «продолжения.Результат» имел значение до того, как распечатать его значение.
Чего еще вы ожидаете от него? Он не может напечатать значение до того, как оно у него появится.
Задача.Результат внутренне ожидает выполнения задачи:
Доступ к методу доступа get свойства блокирует вызывающий поток до завершения асинхронной операции