1

バックグラウンドで長時間実行する操作を実行したい。要件は次のとおりです。

  1. 操作は、呼び出しスレッドに対して非同期で実行する必要があります。

  2. 呼び出し元のスレッドは、操作が完了するまで待機し、その結果を取得できます

  3. タイムアウトが発生すると、操作をすぐに中止する必要があります。

私はタスクを使用していたでしょうが、私が知っている限り、タスクを完全に強制終了するメカニズムはありません。キャンセル トークンは私には適していません。不明な理由 (バグ) でスタックした場合にのみ、タスクを強制終了します。これはフェイルセーフ メカニズムです。言うまでもなく、タスクが停止している場合、キャンセルを要求しても意味がありません。BackgroundWorker についても同様です。

呼び出し元のスレッドとバックグラウンド スレッドの間で共有オブジェクトを使用すること以外に、より洗練されたものはありますか?

4

2 に答える 2