問題タブ [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 投票する
0 に答える
460 参照

c# - 非同期キャンセル例外 Metro ダイアログ

ShowMessageAsync メソッドを使用して MahApps Metro ダイアログを使用しています。ダイアログを呼び出してキャンセルする場合があります。私はそのようにダイアログを呼び出しています

そのままキャンセル

次の例を使用してテストしたところ、これはうまく機能しているようです

トークンも使用しました。ThrowIfCancellationRequested();ショーとキャンセルの間に非同期性があるためです。私の問題は、ショーの前にキャンセルすると正常に動作し、ショーの後にキャンセルすると正常に動作しますが、ショーの後0〜500ミリ秒の間にキャンセルするとNullReference例外がスローされることです。完全に初期化される前にキャンセルされた場合を除いて、MahApps コードの何かが正しくないことが原因のようです。ロックする方法を見つけようとしたので、初期化後にのみキャンセルできますが、準備ができているかどうかを確認する方法が見つかりませんか?

アップデート:

これは、何が失敗するかまで単純化されています。次のコードは、NullRefernce 例外をスローします。

更新 2: これにより例外が発生します。

これはしませんが:

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

c# - イベントハンドラメソッド内から、メソッドで定義されたローカル変数への参照を取得する方法は? (より良いタイトルがない場合)

検索ボタンをクリックするたびに tabPages を追加する tabControl があります。tabControl オブジェクトには、MouseDown のイベント ハンドラーもあり、マウスが特定のタブの上に移動してクリックしたときにタブを閉じることができます。また、tabcontrol_MouseDown メソッドは、検索ボタンをクリックしたときに開始されたタスクをキャンセルします。これにより、タスクは、その resultData を持つ tabControl から削除された tabPage で更新しようとしません。

以下のコードの問題は、それctsがオブジェクト変数であるため、新しい CancellationTokenSource で新しいタブを作成するたびに上書きされることです。これは、1 つの tabPage を tabControl に追加するだけでよい場合に機能しますが、多数追加する必要があります。

searchButton_Click メソッド内でキャンセル トークンを定義して作成し、tabControl_MouseDown にそれへの参照を見つけさせる方法はありますか、またはこれを解決できる別の方法はありますか?

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

c# - CancellationToken の正しい使い方

これは私の状況です:

cancelToken メソッドを呼び出すと、Task はキャンセルされません。どうして?

タスクのキャンセルに関する Stackoverflow の他の質問であるMicrosoft のガイドを読みました。

しかし、まだそれらを正しく使用するのは困難です。

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

c# - .NET コンソール アプリでの CancelKeyPress イベントの使用

v4.5.1 で .NET コンソール アプリ (C#) を作成しました。私のMain方法は次のようになります。

可能なコマンドの 1 つ (によって処理される) は、デリゲートProcessCommandを介して CTRL + C を使用してキャンセルできるようにしたい長時間実行プロセスを呼び出します。Console.CancelKeyPress

しかし、これを行うと、Visual Studio は「mscorlib.dll がロードされていません」というタブを開き、何もしません。コンソールは開いたままですが、応答しません。

また、デバッグ以外でアプリを実行しようとしましたが、実行可能ファイルが見つかりません。