問題タブ [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.

0 投票する
1 に答える
2392 参照

c# - Task.Wait() なしで cancelToken を使用する

長時間実行されるwinforms appタスクと 2 つのボタンがあります。ワンボタンスタートとワンストップ。

開始ボタンを押すと、キャンセルトークンを持つ新しいタスクが開始されます。Stop ボタンを押すと、キャンセル トークンの Cancel メソッドが呼び出されます。

UI を常に使用できるようにしたいので、このジョブの try と catch ブロックをどこに配置しますか。私が見たすべての例で、t.Wait(); の周りに配置しました。

しかし、それを行うとUIがフリーズします。それが、最初にタスクを使用した理由であり、タスクを実行しながらUIを使用し続けます。では、Task.Wait を使用せずに try catch ブロックをどこに置くか。

スタートボタン:

停止ボタン:

0 投票する
5 に答える
24248 参照

c# - CancellationToken が CancellationTokenSource と異なるのはなぜですか?

クラスCancellationTokenに加えて.NET 構造体が導入された理由の根拠を探しています。API の使用方法CancellationTokenSourceは理解していますが、そのように設計されている理由も理解したいと考えています。

つまり、なぜ私たちは持っているのですか:

次のように直接渡す代わりにCancellationTokenSource

これは、トークンを渡すよりもキャンセル状態のチェックが頻繁に行われるという事実に基づくパフォーマンスの最適化ですか?

それで、それCancellationTokenSourceは と update を追跡できCancellationTokens、各トークンのキャンセルチェックはローカルフィールドアクセスですか?

どちらの場合も、ロックのない volatile bool で十分であることを考えると、なぜそれが高速になるのかはまだわかりません。

ありがとう!

0 投票する
1 に答える
1462 参照

f# - F# Async.RunSynchronously タイムアウトと cancelToken を使用

タイムアウトと CancellationToken を指定して Async.RunSynchronously を呼び出すと、タイムアウト値が無視されるようです。CancellationToken で CancelAfter を呼び出すことでこれを回避できますが、理想的には、ワークフローで発生する例外、TimeOutExceptions と OperationCanceledExceptions を区別できるようにしたいと考えています。

以下のサンプルコードがこれを示していると思います。

次の出力は、タイムアウトが最初のケース (CancelationToken が指定されていない場合) でのみ有効であることを示しています。

これは意図した動作ですか?私が求めている動作を取得する方法はありますか?

ありがとう!

0 投票する
4 に答える
237632 参照

c# - CancellationToken プロパティの使用方法

クラス RulyCancelerの前のコードと比較して、私は CancellationTokenSource.

Cancellation Tokensに記載されているように、つまり、例外をスロー/キャッチせずに使用するにはどうすればよいですか? 物件を利用できIsCancellationRequestedますか?

私はこのようにそれを使用しようとしました:

cancelToken.ThrowIfCancellationRequested();しかし、これによりメソッドで実行時エラーが発生しましたWork(CancellationToken cancelToken):

私が正常に実行したコードは、新しいスレッドで OperationCanceledException をキャッチしました。

0 投票する
2 に答える
2080 参照

c# - CancellationToken を非同期メソッドの Task に関連付ける

質問: をメソッドから返されたCancellationTokenに関連付ける方法はありますか?Taskasync

一般に、がのと一致するでスローされると、 はTaskCanceled状態になります。それらが一致しない場合、タスクは次の状態になります。OperationCancelledExceptionCancellationTokenTaskCancellationTokenFaulted

async/では、メソッドのawaitを設定する方法が見つかりませんでした(したがって、同じ種類の機能を実現します)。私のテストから、メソッドが Canceled 状態になる原因となるようです。TaskCancellationToken OperationCancelledExceptionasync

asyncメソッドから呼び出したメソッドがキャンセルされた場合 (およびキャンセルを予期していない場合、つまり this ではない場合)、タスクが状態に入ることが予想されるため、もう少し制御できるとよいでしょうTask。-州ではありません。CancellationTokenFaultedCanceled

0 投票する
7 に答える
13583 参照

c# - TaskCancellationTokenを取得する

タスクアクションの実行中CancellationTokenにコンストラクターに渡されたものを取得できますか?Taskほとんどのサンプルは次のようになります。

しかし、私のアクションがラムダではなく、他のクラスに配置されたメソッドであり、直接アクセスできない場合はどうなりtokenますか?token状態として渡すことが唯一の方法ですか?

0 投票する
3 に答える
1447 参照

c# - CancellationToken引数を指定したCopyTo

議論CopyToAsyncがあるようです。しかし、私のコードはすでにバックグラウンドスレッドで実行されているので、CancellationToken必要ありません。bufferSizeのバイト数をコピーするたびにそれを取得してチェックするオーバーロードが必要CopyToAsyncです。組み込みの実装はありますか?CopyToCancellationToken

0 投票する
2 に答える
5494 参照

c# - parallel.foreach - loopState.Stop() とキャンセル

Cancellation 操作と loopState 操作 (Break/Stop) の違いは何ですか?

ParallelOptions Cancellation 操作と ParallelOptions 操作を使用する理由、またはその逆を使用する必要があるのはなぜloopState.Break();ですかloopState.Stop();?

0 投票する
2 に答える
3567 参照

c# - キャンセルトークンの停止はどのように続行しますか?

私はこのコードでスレッドを持っています:

returnの代わりにを使用していることに注意してください。breakスレッドを停止すると、 をsome operation 2実行してはならないからです。

また、このように .ContinueWith が実行されていないことにも気付きました。

まあ、それは単なる「リターン」機能です。tokenSource.Cancel()C#は、通常の戻りではなく、戻りが原因で戻っていることをどのように知ることができますか?

0 投票する
1 に答える
2380 参照

asp.net-web-api - Web API: CancellationToken を使用した DelegatingHandler

典型的な Web API DelegatingHandler の実装は次のようになります...

CancellationToken.IsCancellationRequested == trueを処理するための推奨される方法は何ですか?

するべきか:

  • エラー応答を生成し、デリゲート チェーンを中断しますか?
  • (上記のように) 何もしませんか?
  • オプション「C」?