5

長いテキスト ファイルを読み取り、非常に長い操作を実行する VB6 で書かれたプログラムがあります。プログレスバーも実装しましたが、私の問題は、プログラムが「応答していません」と表示され、タスクが完了すると再び応答を開始することです。

この「応答しない」問題を解決するにはどうすればよいですか?

4

2 に答える 2

7

Windows/Explorer は、メッセージを処理しない時間が長すぎると、プロセスを「応答なし」状態に変更します。VB6 では、 を呼び出さずにコードの長いセクションを実行すると、これが発生しますDoEvents

残念ながら、VB6 では複数のスレッドを簡単に処理できないためDoEvents、操作中に定期的に呼び出すのが最善の方法です。理想的には、これは進行状況バーの位置を更新した直後です。

これを行うときは、再入可能性を防ぐために注意する必要があります。これは、長い操作の開始時にコントロールを無効にし、終了時に再度有効にすることで簡単に行えます。キャンセルさせたい場合は、キャンセル ボタンのクリック イベントで設定したブール値を使用し、呼び出しDoEventsに確認する必要があります。

于 2012-06-22T13:32:11.177 に答える
1

DoEvents長い操作を呼び出すことができますが、それに関連するさまざまな注意事項があるため注意してください。

于 2012-06-22T13:21:45.030 に答える