177

私はawait/sleepパラダイムに基づいてネットワークにバインドされたアプリケーションを書いています。

時々、接続エラーが発生します、そして私の経験では、しばらく待ってから操作を再試行するのはお金がかかります。

問題は、await / asyncでThread.Sleepまたは他の同様のブロック操作を使用すると、呼び出し元のスレッドのすべてのアクティビティがブロックされることです。

と同じ効果を得るには、Thread.Sleep(10000)を何に置き換える必要がありますか

await Thread.SleepAsync(10000)

アップデート

追加のスレッドを作成せずにこれを行う答えを好みます

4

1 に答える 1

405

新しいスレッドを開始することを示唆する他の答えは悪い考えです-それをする必要はまったくありません。async/のポイントの一部は、アプリケーションが必要とするスレッドの数await減らすことです。

代わりに、新しいスレッドを必要Task.Delayせず、この目的のために正確に設計されたものを使用する必要があります。

// Execution of the async method will continue one second later, but without
// blocking.
await Task.Delay(1000);
于 2012-11-17T11:28:24.240 に答える