メイン VCL スレッドへのアクセスをシリアル化するために同期を使用して Delphi コードを作成したが、このコードを非 VCL アプリケーションで使用した場合、アプリケーションのメイン スレッドと同期するのでしょうか、それともまったく効果がないのでしょうか。
例:
procedure TMyThread.Execute;
begin
// ... other code
Synchronize(SomeMethod);
// ...
end;
仮定しましょう
- エンドレス ループで (または終了するまで) 実行されるメイン スレッドを持つ非 VCL アプリケーションです。
CheckSynchronize
メイン スレッドが直接または WakeMainThread ハンドラーで呼び出されない- セカンダリ スレッドが実行され、上記の例のように Synchronize(SomeMethod) が実行されます
スレッドは Synchronize(SomeMethod) 行でハングしますか?