4

私は.net WPFでプログラミングしています。

Begin/End 非同期呼び出しパターンを実装する (サード パーティの) API があります。BeginWork() 関数は IAsyncResult を返します。

ただし、いったん終了すると、呼び出しをキャンセル/中止する明らかな方法はありません。

そのような仕事を止める方法はありますか?ライブラリの作成者がキャンセル メソッドを明示的に提供する必要がある場合、このジョブを無礼にでも強制終了する方法は何ですか? 1 つのジョブが完了するまでに数時間かかる場合があるため、どうにかして停止できるようにする必要があります。

ありがとう!

4

1 に答える 1

3

実装にキャンセルを許可する特定のコードが含まれていない場合は、キャンセルできない可能性が非常に高くなります。特に外部リソースが関係する場合は、すべてを論理的に完全にキャンセルできるわけではありません。しかし、それをキャンセルするコードが単に書かれていない場合も同様です。スレッドをランダムに強制終了することもできますが、これはプロセスを破滅させます。基本的に、これは途中でプロセス全体を強制終了することを決定するのと同じです。作業は停止しますが、トランザクションでない場合は完全に混乱する可能性があります。

私があなただったら、(のいずれか):

  • サポートされているキャンセル API についてサードパーティに問い合わせる
  • 確信が持てない限り開始しないでください
于 2013-05-11T09:22:58.917 に答える