5

タイトルが示すように、データベースからロードを開始するメソッドを呼び出します。特定のイベントが発生した場合、読み込みが完了するのを待たずに、そのメソッドを途中で終了したいと考えています。

編集:問題のメソッドはUIスレッドで実行されます

4

2 に答える 2

7

そのメソッドの外部からメソッドを (きれいに) 破壊的にキャンセルする方法はありません。

.NET Framework でのキャンセルは通常、協調モデルです。これは、イベントがキャンセルを要求することを意味し、メソッドは、キャンセルする必要があるかどうかをときどきチェックしてから、正常に終了します。

これは、フレームワーク内のCancellationTokenandCancellationTokenSource型を介して処理されます。詳細については、MSDN のキャンセルに関するトピックを参照してください。

于 2012-05-30T17:56:22.667 に答える
1

UI スレッドで長時間実行されるメソッドを実行する場合、それを停止するのに役立つ組み込みのメソッドはほとんどありません。また、UI スレッドはイベントをリッスンできません (メソッドの実行時にブロックされるため)。

UI をレスポンシブにし、操作をキャンセル可能にするオプション:

  • 別のスレッドで長時間実行されるメソッドを実行する
  • 可能な限り操作の非同期実行を使用します。

キャンセルするには - 操作が実行されている接続/ファイルを終了/閉じることで、一部の操作をキャンセルできる場合があります。ほとんどの IO 操作は、そのようなアクションがメソッドをすぐに終了させることを保証しないことに注意してください。

于 2012-05-30T18:35:10.860 に答える