2

標準の検索ダイアログがあります。

ここに画像の説明を入力

私のプログラムはいくつかの非常に大きなファイルを処理でき、そのようなファイル内のテキストを見つけるのに 10 秒または 20 秒以上かかる場合があります。「次を検索」ボタンを押した後、カーソルを砂時計に変更します。テキストが見つかったか見つからなかったら、標準のポインターに戻します。

私の問題は、ユーザーが検索をキャンセルすることを決定し、[キャンセル] ボタンを押して実行することを決定する可能性があることです。[キャンセル] ボタンをクリックするとダイアログが閉じますが、テキストが見つかるか見つからないまで、FindDialogFind ルーチン内で検索が続行されます。

FindDialog.exe の終了時にブレークポイントを設定しましたが、FindDialogFind が完了するまで到達しません。

FindDialogFind ループを中断できるようにする [キャンセル] ボタンが押されたという事実をキャプチャする方法はありますか、または [キャンセル] ボタンが押されたときに検索を停止するより良い方法がありますか?

4

2 に答える 2

1

Next検索ロジックを、ボタンが押されるたびに起動するワーカー スレッドに移動します。ダイアログが閉じられると、スレッドがまだ実行されている場合はスレッドを終了できます。

于 2012-01-09T22:11:26.543 に答える