Как получить ожидаемый поток.Спать?


Я пишу сетевое приложение, основанное на парадигме ожидания/сна.

иногда возникают ошибки подключения, и по моему опыту стоит подождать некоторое время, а затем повторить операцию снова.

проблема в том, что если я использую нить.Sleep или какая-то аналогичная операция блокировки в await/async, она блокирует всю активность в потоке вызывающего объекта.

что я должен заменить нить.Сон (10000) С для того чтобы достигнуть такого же влияния как

await Thread.SleepAsync(10000)

?

обновление

Я предпочитаю ответ, который делает это без создания каких-либо дополнительных потоков

1 87

1 ответ:

другие ответы, предлагающие начать новый поток, являются плохой идеей-нет необходимости делать это вообще. Часть точки зрения async/await это уменьшить количество потоков, необходимых вашему приложению.

вы должны вместо этого использовать Task.Delay, который не требуется новый поток, и был разработан именно для этой цели:

// Execution of the async method will continue one second later, but without
// blocking.
await Task.Delay(1000);