問題タブ [cancellation-token]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Task.Run のタイムアウトに CancellationToken を使用しても機能しない
わかりました、私の質問は本当に簡単です。このコードがスローしないのはなぜTaskCancelledException
ですか?
しかし、これは機能します
c# - キャンセル トークンを使用して C# でブロックされたタスクをキャンセルするにはどうすればよいですか?
常にブロックされるタスクがあり、タスクをキャンセルするために使用される CancellationToken が渡されます。ただし、タスクのキャンセル時に実行するように設定されている継続タスクは実行されません。コードは次のとおりです。
後でコードのどこかで...
_stream.StartStream() に Task を使用しなければならなかった理由は、この呼び出しが永久にブロックされるためです (私が制御できない API、_stream は Web サービスからデータをストリーミングするサードパーティの Api を参照することに注意してください)。それは別のスレッドで。
タスクをキャンセルする最良の方法は何ですか?
c# - CancellationTokenがキャンセルされたときにコードを実行する方法は?
CancellationToken を指定して、CancellationToken がキャンセルされたときに非同期操作を表すオブジェクトで「キャンセル」メソッドを呼び出したいと考えています。これは可能ですか?
背景: 次の方法で非同期操作を表す API とやり取りしています (多かれ少なかれ):
これをメソッドで簡単にラップできますがTask DoAsyncOp()
、キャンセルをサポートしたいと思いTask DoAsyncOp(CancellationToken cancellationToken)
ます。私の場合、CancellationToken がキャンセルされたら、AsyncOp オブジェクトで Cancel を呼び出します。
c# - Azure Service Bus Queue クライアントで CancellationToken を使用する方法は?
Azure Service Bus キュー クライアントでは、このReceiveBatchAsync
メソッドを使用して、指定された時間待機し、メッセージのバッチを非同期的に受信します。
アプリケーションを完全にシャットダウンしたいのでCancellationToken
、長時間実行されるすべての非同期プロセスに実装していますが、ReceiveBatchAsync
キャンセル可能な過負荷はないようです。
言い換えれば、私はこれをしたいのですが、できません:
CancellationToken
直接提供されないこのようなタスクに aを適用する最良の方法は何でしょうか? シャットダウン中に 30 秒も待ちたくありません。
c# - Task.RunSynchronously() は CancellationToken を気にしません
現在のスレッドでサードパーティ関数を実行したい (オーバーヘッドを避けるため) が、CancellationTokenを使用していつでも関数を中断できるようにしたい。
それが私がタスクを作成して実行する方法です:
cts.Cancel()
(別のスレッドで)呼び出された後、タスクは停止しません。
F# でトリックを実行する静的関数を見つけました。
簡単な C# ソリューションがあるはずだと確信しています。助けてもらえますか?
c# - TaskCanceledException をキャッチして Task.Canceled をチェックするのは良い考えですか?
私のチームには、 async を使ったコーディングが大好きな人が何人かいTask
ます。また、パラメータを使用したい場合もありCancellationToken
ます。
私が確信していないのは、チームとしてこのスタイルのコード (A) を使用する必要があるかどうかです。
これは明らかに、呼び出し元が処理を続行するかどうかを判断するためにキャンセル トークン自体をチェックする必要があり、null retVals を処理する必要がある可能性があることを意味します。
ただし、TaskCanceledException に依存する 2 番目のスタイルのコード (B) を採用すると、次のようになります。
実装コードは間違いなく単純です。呼び出し元は、必要に応じて例外を処理するかどうかを選択できます...しかし、呼び出し元がTaskCanceledException を心配する必要があることを忘れて、プロセスがクラッシュする可能性があることを心配せずにはいられません。これらの例外を (フォアグラウンドまたはバックグラウンド スレッドで) キャッチしないためです。
ですから、私の過度に楽観的な言い回しの質問は次のとおりです。誰もが常に使用すべき最適なスタイルはどれだと思いますか。また、その理由は何ですか? :)