問題タブ [cancellationtokensource]

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 に答える
1437 参照

c# - CancellationTokenSource とその子 CancellationTokenRegistration の破棄

経由で取得した子オブジェクトDispose()CancellationTokenSource破棄しますか? それとも、各登録を個別に処分する必要がありますか?CancellationTokenRegistrationToken.Register()

例 1:

例 2:

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

c# - CancellationToken - キャンセル要求後にハンドラーを登録する

迅速なテストベッドを構築しない場合。私はすぐにSOに尋ねて、誰かがその答えをすぐに知っているかどうかを確認すると思いました.

さらに、同様の状況に遭遇する可能性のある他のユーザーに通知するという追加の利点があるかもしれません..

CancellationToken にハンドラーを登録する多くの異なるコンポーネントを含む、長寿命の CancellationTokenSource があるとします。

キャンセルが要求され、登録されたコールバックがすべて呼び出された場合、その時点に続いて別のハンドラーが登録されます。登録の時点で、その新しいコールバックに対してキャンセル コールバックが引き続き発生しますか?

事前に乾杯!

0 投票する
0 に答える
186 参照

c# - 2 つの DLL でキャンセル トークンを共有する方法は?

FIRST dllに次のコードがあります。

メソッド クラスclassASECOND dllにあります。

次に、メソッド FuncAsync がコンソール アプリケーションで呼び出されます。

最初の DLL には 2 番目の DLL が含まれ、コンソール アプリケーションには最初の DLL が含まれます。

このコードは正常にコンパイルされ、警告もエラーもありません。しかし、実行時に次の行でエラーが発生します: Save(a, b, ct);

Additional information: Could not load type 'ProgressHandler' from assembly 'A.B.C, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' because the method 'func' has no implementation (no RVA).

コードから CancellationToken を削除すると、すべて問題ありません。

CancellationToken を Application から DLL1 に送信し、次に DLL1 から DLL2 に送信するにはどうすればよいですか?

編集 :

コマンドのみを使用して、2つのDLLを1つにマージすることを正確に忘れていました。

ライブラリをマージしない場合、コードにエラーはありません。

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

c# - 操作実行中の非同期キャンセル

.net での非同期プログラミングに関するいくつかのテストを開始していますが、今は cancelToken を使用して長い操作をキャンセルしようとしています。

だから私は次のコードを持っています:

操作を開始するためのマイ ボタン

そして最後に私の操作

では、MyLongOperation() メソッドをキャンセルする方法は? することは可能ですか?

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

asynchronous - f# async はいつ CancellationToken をチェックしますか?

私は楽しみと利益のために F# を読んでいます - 非同期プログラミングワークフローのキャンセルの下に、次の例があります。

これについて彼らは言う:

F# では、ネストされた非同期呼び出しはキャンセル トークンを自動的にチェックします。

この場合、それは次の行でした:

出力からわかるように、この行でキャンセルが発生しました。

ただし、私 (VS2010、F# 2.0、F# Interactive) の場合、次の出力が得られます。..afterトークンをキャンセルした後も印刷されることに注意してください。彼らは単に間違っていますか?

ということは、エントリー 時にキャンセルのチェックが行われるのではないAsync.Sleepでしょうか?いいえ、次のように出力されます。

したがって、チェックは実際には for ループにあるようです。つまり、キャンセルされた後、for ループまで実行し続けます。これが仕組みですか?睡眠後にチェックしたい場合はどうすればよいですか?

この質問は、上記のようにキャンセルが機能していることを示唆しているようです:キャンセルを明示的にチェックできますか/非同期計算を終了できますか?

編集: これが FSI 2.0 のみであるかどうかについて: 次のループで何が起こるか、それぞれ 200ms、2500ms、4000ms スリープすると? 真ん中に印刷されますか?