私がフォームFooを持っているとしましょう。独自のスレッドで実行され、メイン アプリケーション スレッドが他の処理でビジーであっても更新されるインスタンスを作成するにはどうすればよいですか? たとえば、ネットワーク通信のブロックなどを処理します。
私は基礎を理解しており、新しいスレッドを作成する必要があること、そのスレッドでフォームインスタンスを作成する必要があることなどを理解しています。
私がフォームFooを持っているとしましょう。独自のスレッドで実行され、メイン アプリケーション スレッドが他の処理でビジーであっても更新されるインスタンスを作成するにはどうすればよいですか? たとえば、ネットワーク通信のブロックなどを処理します。
私は基礎を理解しており、新しいスレッドを作成する必要があること、そのスレッドでフォームインスタンスを作成する必要があることなどを理解しています。
Windows メッセージ キューはこのメイン スレッドにのみ関連付けられているため、メイン アプリケーション スレッド以外のスレッドでフォームを作成しないでください。
別の考え方: フォームが常に更新され、応答性が高いことを確認するには、フォーム用ではなく、newtork 通信のブロックの処理などの忙しい作業用に別のスレッドを作成します。このような場合、新しいスレッドを作成した後、メインフォームはそのキューからメッセージを送り続けますが、別のスレッドの関数は必要な汚い仕事をしています。PostMessage()
作業スレッドが終了すると、 WinAPI 関数を使用してメイン スレッドに結果を通知できます。このようなカスタム メッセージのハンドラーをフォームに用意するだけで、作業中のスレッドとシームレスに通信できます。
また、「ビジーな作業」がそれほど複雑でない場合は、フォーム スレッドで作業を実行し、ProcessMessages()
時々関数を呼び出して、フォームを更新し続けることで、スレッドを追加せずに処理することもできます。