問題タブ [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-contentprovider - ContentProvider:delete()への以前の呼び出しをキャンセルするにはどうすればよいですか?
カスタムContentProviderを使用しています。クエリには、以前のquery()の呼び出しをキャンセルするために使用できるCancellationSignal (API 16+)があります。
私の質問:どうすればそれをアーカイブできdelete()
ますか?明確にするために、私のカスタムプロバイダーはSDカード上のファイルを管理しているので、プロバイダー内の削除操作をキャンセルできるようにしたいと思います。
.net - CancellationToken のポーリングが不可能な場合のキャンセルの提供
呼び出し元のスレッドをブロックするがキャンセルをサポートしないメソッドの (ばかげた) 例を次に示します。
最悪の場合、このメソッドを呼び出してから戻るまでに 17 時間かかります。このメソッドのソース コードにアクセスできないふりをします。CancellationToken を受け取るメソッドで呼び出しをラップするにはどうすればよいですか?
目標は、WorkUntil5()
キャンセルが要求されるまで実行することです。その時点で、コールは可能な手段を使用して終了する必要があります。
これが私が自分自身を思いつくことができる最良の方法です。タスクを使用しますが、それでも呼び出し元のスレッドをブロックします。それについて何かが正しく感じられません。mres.Set()
最初の呼び出しが返されたら、より良い呼び出し方法があるはずだと考えています。
java - Java タイマーがキャンセルされたかどうかの確認
java.util.TimerオブジェクトのisCancelled
メソッドがないのはなぜですか?
タイマーがキャンセルされていない場合はタスクをスケジュールし、キャンセルされている場合は直接 (同じスレッドで) 実行したいと思います。
IllegalStateException
タイマーが既にキャンセルされている場合に発生する可能性があることをキャッチする唯一のオプションはありますか? ( をキャッチするのは間違っているように感じますIllegalStateException
)。
c# - タイプ 'System.OperationCanceledException' の例外が発生しました
Parallel.ForEach ループを実装して何らかの作業を行っていましたが、キャンセルを処理していると思っていたときに、未処理の例外が原因で問題が発生しました。
問題を把握するために、winform で簡単なテスト設定を行いました。開始ボタン、キャンセル ボタン、出力用のラベルがあります。
コード:
プログラムを実行してキャンセル ボタンを押すと (button2_Click をトリガーするため)、次のエラーが発生し続けます。
タイプ 'System.OperationCanceledException' の例外が mscorlib.dll で発生しましたが、ユーザー コードで処理されませんでした
追加情報: 操作はキャンセルされました。
この例外のハンドラがあれば、プログラムは安全に続行できます。
また、デバッガーは Parallel.ForEach セクションを強調表示します。しかし、なぜ???CancellationToken を介してキャンセルを正しく処理したと思います。
ex の例外メッセージでは、明確な説明が得られません:「{"操作がキャンセルされました。"}」ええと...ええ....それが意図されていました...
私は何を見落としていますか?よろしく、
マティス
c# - Tasks.Wait() ロールバック イベントを使用し、キャンセル トークンを使用しない理由
だから私が理解していないのは、次のアプリケーションで何が起こるかです:
最初の例では、プログラムは次の行を実行する必要があると思います。Console.WriteLine("Object is " + ob);
その後、中断するときにt.Wait(1000)
行はありません。
プログラムの出力は次のとおりです。
つまりtask.Wait()
、スレッドを突然閉じて、それが行ったことをロールバックする方法にすぎませんか?
angularjs - AngularJSで$httpリクエストをキャンセルするにはどうすればよいですか?
AngularJSでAjaxリクエストが与えられた
別のリクエストが起動された場合にそのリクエストをキャンセルする最も効果的な方法は何ですか(同じバックエンド、異なるパラメータなど)。
c# - Task.Wait() なしで cancelToken を使用する
長時間実行されるwinforms app
タスクと 2 つのボタンがあります。ワンボタンスタートとワンストップ。
開始ボタンを押すと、キャンセルトークンを持つ新しいタスクが開始されます。Stop ボタンを押すと、キャンセル トークンの Cancel メソッドが呼び出されます。
UI を常に使用できるようにしたいので、このジョブの try と catch ブロックをどこに配置しますか。私が見たすべての例で、t.Wait(); の周りに配置しました。
しかし、それを行うとUIがフリーズします。それが、最初にタスクを使用した理由であり、タスクを実行しながらUIを使用し続けます。では、Task.Wait を使用せずに try catch ブロックをどこに置くか。
スタートボタン:
停止ボタン:
precision - 交代級数:浮動小数点の精度に関する問題
x
測定から得られた数値のリストがあります。数量を計算する必要があります
ここa
で、は正の数です。残念ながら、合計の個々の項は非常に大きくなる可能性があり、各項の符号は、k
およびに関連するの値によって決定されますx
。これはキャンセルと精度の低下につながります。
補償された加算などのいくつかのアプローチを見つけましたが、私が正しい道を進んでいるかどうか、そしてより良い代替案があるかどうかを確認したいと思いました。
c# - キャンセル可能なリモート プロセスとキャプチャ出力
C# API を介して PowerShell を使用して、次のことを実行しようとしています。
- リモートプロセスを開始する
- それらを終了します
- リモートプロセスの標準およびエラー出力をキャプチャします (プロセスが終了した後ではなく、その出力が生成されているとき)。
- リモート プロセスの終了コードをキャプチャします。
次の PowerShell スクリプトを使用してリモート プロセスを開始しています。
私のプロトタイプの C# 部分は次のようになります。
これはローカルで実行されたプロセスの出力をキャプチャしますが、これはリモート プロセスでも機能しますか? (もう 1 つのあまり重要でない質問は、これがリモート プロセスでどのように機能するかということです。.Net Remoting は何らかの形で関与しており、Process のプロキシを取得していますか?)そうでない場合、それを行う方法は何ですか? プロセスが終了した後ではなく、生成中の出力が必要であることに注意してください。
これは、プロセスの終了をキャプチャしません。最初にプロセス ID をキャプチャしてから、別の実行空間から「Stop Process」PowerShell スクリプトを実行して、終了を試みました。「パイプラインはすでに実行中」であり、パイプラインを並行して実行できないため、失敗しました...次に、C#からprocess.Kill()を呼び出してみましたが、ローカルプロセスでは機能しましたが、SOは機能しないと報告していますリモート プロセス...次に、PowerShell スクリプトを調整して、グローバル変数と待機ループを含めようとしましたが、パイプラインの開始後にその変数を設定する方法がわかりませんでした。追加されたループは次のようになります。
それで、それも失敗しました。私のシナリオのプロセス終了に関するアドバイスはありますか?
PowerShell はこれに適していますか? (フォークの問題があるため、以前に使用しようとした openSSH には強く反対しています)。
更新:私がやったことは、リモートでスクリプトを実行するように指示されたpowershell.exeに(プロセスを開始するC#を介して-「powershell」+「-Command ...」を介して)呼び出すことでした(invoke-command)コンピューター。Powershell はデフォルトでリモート PC で生成された出力をキャプチャするため、この Process インスタンスを簡単に取得できました。キャンセルしたいときは、ローカルプロセスを強制終了しました。リモート コマンドのリターン コードは、よりトリッキーでした。コマンド、スクリプト、および C# スニペットをしばらく投稿します。
caliburn.micro - コルーチンの 'finally' アクション
Loader
CM ドキュメントに含まれる実装を使用するコルーチンがあり、それを使用してページにビジー インジケーターを表示するとします。
ここで、ユーザーがデータ ストアに既に存在するオブジェクトを追加しようとしたとします。当然、コルーチン中に「保存」操作は失敗します。つまり、コルーチンは実行をキャンセルします。
これが発生した場合、列挙子はLoader.Hide()
ビジー インジケーターを非表示にするための呼び出しに到達IResult
しません。
例:
コルーチンが 2 番目のステップで正当に失敗した場合、ビジー インジケーターが画面に表示されたままになり、ユーザーがエラーを修正して再保存を試みる機会がなくなります (そして、基になる UI とのやり取りが停止します!)
コルーチンの実装を拡張し、エラーが発生したときに実行を許可するかどうかを示すフラグを持つイテレータを作成することもできます。