問題タブ [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.
c# - キャンセル トークンを使用してタスクをキャンセルする
データを取得するタスクがあります。変更するとタスクがキャンセルされ、タスクが再度開始されるという別のプロパティがありますが、以下に示す別のパラメーターを使用します。
財産:
したがって、私の問題は、このインスタンスでタスクが完了する前に、常にタスクをキャンセルしていることです。MyThing
タスクの最初のインスタンスがキャンセルされたが、プロパティから起動された 2 番目のインスタンスが完了まで実行されるというこのシナリオを取得するにはどうすればよいですか?
c# - CancellationToken のタスク ステータスは変更されません
私はダウンローダ クラスを実装しており、タスクを使用しています。最初にタスクを作成し、CancellationToken を渡しました。タスクをキャンセルすると、タスクはキャンセルされますが、ThrowIfCancellationRequested( を呼び出した後でも、タスクのステータスはまだ実行中です) ) ステータスは同じままです。ThrowIfCancellationRequested() をスローした場合、ステータスは Canceled または Faulted であると想定されていませんか。
これが私のコードです:
c# - 一部のウェイターのみをキャンセルするキャンセル トークン ソースを持つことは可能ですか?
与えられた:
BlockingCollection<T> coll
CancellationTokenSource cts
- 10 個のスレッドがブロックされています
coll.GetConsumingEnumerable(cts.Token)
したがってcts.Cancel()
、10 個のスレッドすべてをキャンセルします。
一部のスレッドのみをキャンセルするように指示できるカスタム キャンセル トークン ソースを作成することは可能ですか? そう:
ブロックされたスレッドのうち 5 つだけをキャンセルします。任意の 5。
?
c# - CancellationToken が別の CancellationToken によって制御されるタスクのサブセットに影響を与える良い方法
キャンセル トークンを別のキャンセル トークンによって制御されるタスクのサブセットに関連付ける方法はありますか?...この例では、2 つの cancelTokenSource を作成し、1 つを他の Cancel 関数に対して登録します。画像の読み込みをキャンセルします...それらのタスクのみをキャンセルします...しかし、すべてをキャンセルすると...すべてのタスクがキャンセルされます...これを行うより良い方法はありますか? (この方法は面倒に思えます...たとえば、いつ登録を解除するか)
c# - Asp.Net MVCのUIから(コントローラーで)進行中のトランザクションをキャンセルするには?
UI からコントローラーにトランザクション要求を送信し、その要求をコントローラーで処理しています。
このプロセスには約 10 秒の時間がかかる場合があります。
トランザクションの処理中、ユーザーはトランザクションをキャンセルすることができます。
したがって、すべてのコミットの前にキャンセル ボタンがクリックされたかどうかを確認する必要があります。
キャンセルボタンがクリックされたときに、コントローラーの新しいインスタンスが作成されるため、その値を新しいリクエストとして渡すことができないと思います。
別のオプションは使用しstatic
ています。しかし、コントローラーの静的フィールドを導入しないという提案があります。
この状況をどのように処理しますか?(何らかのトークンを使用している可能性がありますが、それでも簡単な回避策がありますか?)
c# - Task.Status を Canceled に設定する他の方法はありますか
わかりました。を使用してタスクをキャンセルする方法を理解しましCancellationTokenSource
た。Task
タイプ「種類」がこの例外を自動的に処理するように見えます-それはTask
'sStatus
を Cancelled に設定します。
これで、まだ実際に を処理する必要がありOperationCancelledException
ます。それ以外の場合、例外は までバブルしApplication.UnhandledException
ます。タスク自体はそれを認識し、内部で何らかの処理を行いますが、未処理の例外を回避するために呼び出しコードを try ブロックでラップする必要があります。時々、これは不要なコードのように思えます。ユーザーがキャンセルを押した場合は、キャンセルしますTask
(明らかに、タスク自体もそれを処理する必要があります)。他のコード要件が必要だとは思いません。Status
プロパティでタスクの完了ステータスを確認するだけです。
言語設計の観点から、これには特定の理由がありますか? Status
プロパティをキャンセルに設定する他の方法はありますか?
c# - タスクをキャンセルしたのに、そのタスクの状態が「RanToCompletion」になっているのはなぜですか?
次のコードでは、ユーザーが任意のキーを押すとキャンセルされるタスクがあります。その際、タスクがキャンセルされたことを示す ContinuationTask が呼び出されます。ContinuationTask は、タスクがキャンセルされたときにのみ実行されるように構成されていますが、実際には実行されます。
しかし、呼び出しスレッドで完了後のタスクのステータスを確認すると、「RanToCompletion」が返されます。そんなことがあるものか?
コードは次のとおりです。