3

間隔を空けて定期的にコードを実行しようとしています。このようなコードが複数同時に実行される可能性があるため、Task.Run非同期メソッド呼び出しと並列処理を利用することにしました。今、時間間隔をどのように実装すればよいのだろうか!

簡単な方法は、次のように使用しTask.Delayます。

var t = Task.Run(async delegate 
{ 
   await Task.Delay(1000); 
   return 42; 
});

しかし、そうするのが正しい方法なのだろうかと思います。すべてのTask.Delayことは、スレッドをスリープ状態にして、期間が終了したら再開することだと信じているからです (よくわかりませんが)。この場合、タスクが実行されていない場合でも、システムはタスクのスレッド リソースに対して料金を支払う必要があります。

この場合、システム リソースを無駄にすることなく一定期間後にタスクを実行する方法はありますか?

4

1 に答える 1

10

Task.Delayスレッドをスリープさせません。タイマーを使用しています。

于 2013-10-08T11:16:48.097 に答える