Wie bekomme ich einen erwartungsvollen Thread.Sleep?

Ich schreibe eine netzwerkgebundene Anwendung, die auf dem Warte- / Schlafparadigma basiert.

Manchmal treten Verbindungsfehler auf, und meiner Erfahrung nach lohnt es sich, einige Zeit zu warten und dann den Vorgang erneut zu versuchen.

Das Problem ist, dass wenn ich Thread.Sleep oder eine ähnliche Blockierungsoperation in await / async verwende, alle Aktivitäten im aufrufenden Thread blockiert werden.

Womit soll ich Thread.Sleep (10000) ersetzen, um den gleichen Effekt zu erzielen wie

await Thread.SleepAsync(10000)

?

AKTUALISIEREN

Ich bevorzuge eine Antwort, die dies tut, ohne zusätzliche Threads zu erstellen

Antworten auf die Frage(1)

Ihre Antwort auf die Frage