0

погружаясь в асинхроннку WinForms не могу понять в чем разница Task.Delay(3000).Wait(); и await Task.Delay(3000); Чем будут отличаться 2 этих кода при выполнении

if (true)
{
    asyncFun()
}

private async void asyncFun() { Task.Delay(3000).Wait(); }


if (true)
{
    asyncFun()
}

private async void asyncFun() { await Task.Delay(3000); }

  • 1
    В том что Wait() блокирует вызывающий поток, а await - нет. Никогда не используйте Wait(). В случае, если вам нужна синхронная блокировка потока на время, лучше тогда используйте Thread.Sleep() вместо Task.Delay().Wait(), он дает меньше нагрузки на систему. – aepot Sep 21 '21 at 11:18
  • Чем будут отличаться 2 этих кода при выполнении - тем что первый "повесит" форму на 3 секнуды, а второй - нет. – aepot Sep 21 '21 at 11:20
  • @aepot Тогда почему я не могу вызвать несколько 'await Task.Delay(3000);' В одной async функции? –  Sep 21 '21 at 11:45
  • Можете вызвать сколько угодно раз. Как и любой другой метод. Либо я не понял, о чем вы. – aepot Sep 21 '21 at 12:52
  • можно вызвать, только выполнятся они последовательно, потому что после каждого await будет сформирован callback метод, который и будет обрабатывать следующую инструкцию await только после прохождения первой – Lenz Sep 22 '21 at 13:04

0 Answers0