私は常にメインスレッドでそのようなものを表示し、イベントを使用してウィンドウの終わりをスレッドと同期させ、ウィンドウが閉じられたことを知らせてきました。
今日、開発中に表示フォームをスレッドからメインUIに移動したかったのですが、うまく表示されました。私が追加した唯一のことは、メインスレッドでイベントを待っているメッセージをプッシュしていることです:
procedure WaitWithMessageLoop();
var
vWaitForEventHandles:array[0..1] of THandle;
vWaitForResponse:DWORD;
Msg: TMSG;
begin
vWaitForEventHandles[0] := LServiceMonitor.Handle;
while (1=1) do
begin
vWaitForResponse := MsgWaitForMultipleObjects(1, vWaitForEventHandles, FALSE, INFINITE, QS_ALLINPUT);
if (vWaitForResponse = WAIT_OBJECT_0 + 1) then
begin
while (PeekMessage(msg,0,0,0,PM_REMOVE)) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end
else
if (vWaitForResponse = WAIT_FAILED)
then RaiseLastOSError
else break;
end;
end;
だから私の質問はです。そのようなシーンは受け入れられますか?または、フォームを移動してメインスレッドに表示する必要がありますか?
ありがとう