J'écris une application liée au réseau basée sur le paradigme attente/sommeil.
Parfois, des erreurs de connexion se produisent et, selon mon expérience, il est avantageux d'attendre un certain temps, puis de relancer l'opération.
Le problème est que si j'utilise Thread.Sleep ou une autre opération de blocage similaire dans wait/async, cela bloque toute activité dans le thread appelant.
Que dois-je remplacer par Thread.Sleep (10000) pour obtenir le même effet que
await Thread.SleepAsync(10000)
?
MISE À JOUR
Je préférerai une réponse qui le fasse sans créer de fil supplémentaire
Les autres réponses suggérant de démarrer un nouveau fil sont une mauvaise idée - inutile de le faire. Une partie du point de async
/await
consiste à réduire le nombre de threads nécessaires à votre application.
Vous devriez plutôt utiliser Task.Delay
qui ne nécessite pas un nouveau thread, et a été conçu précisément pour cela:
// Execution of the async method will continue one second later, but without
// blocking.
await Task.Delay(1000);