1. ホーム
  2. c#

[解決済み] Task.DelayとThread.Sleepの使い分けは?

2022-03-18 19:26:37

質問

を使用する際の良いルールはありますか? タスク.ディレイ スレッド.スリープ ?

  • 具体的に、一方が他方より効果的/効率的であるために提供すべき最小値はありますか?
  • 最後に、Task.Delayはasync/awaitステートマシンのコンテキストスイッチを引き起こすので、それを使用することによるオーバーヘッドがありますか?

解決方法は?

使用方法 Thread.Sleep は、現在のスレッドをブロックしたい場合です。

使用方法 Task.Delay 現在のスレッドをブロックすることなく論理的な遅延が必要な場合。

これらのメソッドで最も重要なのは効率性ではありません。現実世界での主な用途は、ミリ秒ではなく秒単位で行われるI/O操作のリトライタイマーとして使用されます。