2016-08-19 3 views
2

Task.Delay(-1)またはTask.Delay(TimeSpan.FromMilliseconds(-1))の使用例があるかどうか疑問です。それぞれの文書によると、そのメソッドは完了する前に無限に待つタスクを作成します。私はawait Task.Delay(...)がスレッドをブロックせず、多くのリソースを消費しないことを知っていますが、一部のリソースを無駄にすることが実際に有用であるとは考えられません。Task.Delay(-1)の使用例はありますか?

私の質問は、キャンセルトークンのないTask.Deley()のオーバーロードについての具体的な質問です。overloads that include cancellation tokenは、待ち時間が中断される可能性があるため、もう少し役に立つかもしれません。

無期限に待機するタスクの使用例がいくつかありますか?メソッドオーバーロード間の一貫性のためだけに存在しますか?

+0

これで、必要なときにタスクを作成するのではなく、一度起動した無期限に待っているタスクのユースケースがありますか? – iheanyi

+0

@iheanyiは本当にありません。私が意味することは、あなたがタスクを作成した場合、最終的にはそれを開始したいということです - もしあなたが 'var t = Task.Delay(-1)'を持っていれば、ある時点で 't wait '(または、 't'や他の仕事のこと)、' t'を待つことは私にとっては意味がありません。 –

+2

あなたはこれを見たことがありますか:http://stackoverflow.com/questions/10741305/why-does-task-delay-allow-an-infinite-delay – iheanyi

答えて

4

Task.Delay(-1)ではなく、Task.Delay(-1、cancellationToken)として使用することを意図していないと思います。そうすれば、タスクを開始し、永遠に、またはcancelationToken(この場合は「開始トークン」)がトリガーされるまでブロックすることができます。私は理由を考えることができません.Delay(-1)それ自体でプロセスが終了するのを妨げるでしょう。

+0

私は同様の気持ちを持っていましたので、私の質問の第2段落を挙げました:「私の質問は、取り消しトークンを持たないTask.Delay()のオーバーロードに関するものです - キャンセルトークンを含むオーバーロードは、中断した。 –

関連する問題