問題タブ [cancellation]
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.
android - ネイティブ コード (C/C++) を含むタスクをキャンセルするには?
バックグラウンド
ビットマップ操作を行うために NDK (JNI) を使用する、短いながらも重いタスクがあります。
場合によっては、タスクをキャンセルして他の作業に取り掛かる必要があります。
ただし、タスクも大量のメモリを使用し、最終的には大きなビットマップも作成するため、メモリ不足エラーが発生する可能性があります。
質問
ネイティブ コードを含むタスクをキャンセルするにはどうすればよいですか? これに対するベストプラクティスはありますか?
C/C++ で使用できるある種の中断された例外で、それがキャッチされるとすぐに、少なくともすべてのメモリを解放できるでしょうか?
ネイティブ コードにある種のリスナー (オブザーバー) を追加する必要があるのではないでしょうか? それとも、呼び出し元が持っていると想定する必要があるメソッドを呼び出す必要がありますか?
android - AsyncTask は、Android で長時間実行されている操作をキャンセルしていません
サーバーから大量のデータをダウンロードする必要があります。ダウンロードには最低 10 秒かかります。ayntask クラスを使用してダウンロードするコードを次に示します。また、ダウンロード中にホームボタンをクリックした場合、無条件にダウンロードをキャンセルしたいです。問題は... cancel() メソッドを実行していますが、ダウンロード操作がキャンセルされません。アプリケーションを終了しても、logcat ビューでバックグラウンドで操作が実行されていることがわかります。doInBackground() メソッドの実行を停止したいだけです。ガイド/助けてください。
ダウンロードボタンをクリックすると:
そして、ここに Asynctask クラスがあります:
内部 onPause()..
DataConnection という名前の別のクラスにあるメソッドを次に示します...
c# - CancellationToken プロパティの使用方法
クラス RulyCancelerの前のコードと比較して、私は CancellationTokenSource.
Cancellation Tokensに記載されているように、つまり、例外をスロー/キャッチせずに使用するにはどうすればよいですか? 物件を利用できIsCancellationRequestedますか?
私はこのようにそれを使用しようとしました:
と
cancelToken.ThrowIfCancellationRequested();しかし、これによりメソッドで実行時エラーが発生しましたWork(CancellationToken cancelToken):
私が正常に実行したコードは、新しいスレッドで OperationCanceledException をキャッチしました。
asp.net-mvc - アクションの実行をキャンセル
フィルターと 2 つのボタン (生成とキャンセル) を含むページがあります。そのため、Generate ボタンをクリックすると、Results アクションに移動します。[キャンセル] ボタンをクリックすると、コードとデータベースで以前のリクエストをキャンセルしたいと思います。
いくつかのコード (.NET 4.0、MVC 4 を使用)
ResultsController.cs:
ResultsRepository.cs
したがって、期待される結果: レポート生成要求をキャンセルすると、データは表示されません。
主な質問: メソッド tokenSource.Cancel() を使用してリクエストをキャンセルできますか? または、ThrowIfCancellationRequested() メソッドを使用する必要があります (どこで?)
c# - キャンセルのためにワーカースレッドからポーリングする方法
完了するのに約1分かかるタスクとサブタスクの複雑なツリーを実行するバックグラウンドワーカースレッドを生成するUIがあります。
要件は、バックグラウンドワーカータスクが開始されたらキャンセルできる必要があることです。
現時点では、私の解決策は素朴で、コードを混乱させています。UIでキャンセルボタンを押すと、キャンセルトークンが設定されます。ワーカースレッドは定期的に(タスク間で)このトークンをポーリングし、設定されている場合は終了します。
より良い解決策はありますか?私は、チェックインを自動的にペッパーし、条件が満たされた場合に内部例外を自動的に発生させるSoLongAsステートメントのようなものを探していました。これは、ループの最後で内部的にキャッチされます。例:
しかし、それは何らかの理由で機能しないと思います。さらに重要なことに、このようなものが実際に存在するのではないかと疑っています。そうでない場合、私が現在使用しているよりもこのシナリオを処理するためのより良い方法はありますか?ありがとう。
c++ - C++ でのキャンセルに関する数値的な問題
浮動小数点演算のキャンセルに問題があります。問題がどこにあるのかはわかっていますが、効率的な解決策が思いつきません。
ここに私の問題があります: 私は 3D で粒子シミュレーションを行っているので、各粒子には 3 つの座標 (x、y、z) があります。ドメイン全体がサブセルに分割されます。ある時点で、粒子があるタイムステップにあるサブセルの ID を計算します。これは簡単な式です。
pos[1] は粒子の x 座標、y_min はドメインの開始点、cellWidth はセルの幅です。
ここに私の問題があります: 私は、粒子の座標が 0 であるべきテストケースを持っています。-3e-18. この式を使用すると、キャンセルにより-3e-18がドロップします。ここでの大きな問題は、パーティクルの位置が負であり、境界線が正確に 0 であるため、パーティクルが実際にあるセル ID とは異なるセル ID が返されることです。
では、この問題を解決する方法を知っている人はいますか? 明確に記載されていることを願っています
scala - Scala での Future と Promise によるキャンセル
これは私の前の質問へのフォローアップです。
割り込み可能なブロッキング呼び出しを実行するタスクがあるとします。として実行し、 のメソッドでFutureキャンセルしたいと思います。failurePromise
キャンセルが次のように機能することを望みます。
タスクが終了する前にタスクをキャンセルした場合、タスクを「すぐに」終了させ、既に開始されている場合はブロッキング呼び出しを中断し、 を呼び出したいと思います。
FutureonFailureタスクが終了した後にタスクをキャンセルした場合、タスクが既に終了しているためキャンセルに失敗したというステータスを取得したいと思います。
それは理にかなっていますか?Scalaで実装することは可能ですか? そのような実装の例はありますか?
c# - BackgroundWorker を適切にキャンセルする方法
メインスレッドとして機能する GUI フォームがありますが、実行する必要がある実際の作業用に別のクラスがあります。
CancellationPendingプロパティをチェックできるように「DoJob」メソッドのパラメーターとしてワーカーを渡す以外に、別のクラスからアクティブ化されているため、ワーカーのプロパティを適切にチェックする方法はありますか?
コード(メインクラス内):
c# - C#キャンセルなしでbackgroundWorkerの実行を停止する方法
cancelPending なしで backgroundWorker スレッドを停止する方法はありますか? 次のようなコードがあります。
VeryLongTimeComputingFunc() を開始した場合でもワーカーを停止する方法はありますか?