Я пишу сетевое приложение, основанное на парадигме ожидания / сна.
Иногда возникают ошибки подключения, и по моему опыту стоит подождать некоторое время, а затем повторить попытку.
Проблема заключается в том, что если я использую Thread.Sleep или другую подобную операцию блокировки в await / async, он блокирует всю активность в потоке вызывающего.
Чем заменить Thread.Sleep (10000) на тот же эффект, что и
await Thread.SleepAsync(10000)
?
ОБНОВИТЬ
Я предпочитаю ответ, который делает это без создания дополнительной темы
источник
async
вступление может оказаться полезным. Когда awaitable возвращаемаяTask.Delay
вawait
Е.Д., так как она не завершена, текущий метод возвращает неполную задачу. Позже, когдаDelay
завершается (отключение по таймеру, а не по потоку), остаток метода планируется запустить. Продолжение работает в «контексте», который может вернуться к той же исходной теме - подробности в моем блоге.await
запланированного (в конце концов).