我希望能够将来自DataSnap自动化服务器主应用程序的消息发布到为服务客户端创建的RemoteDataModule实例。
我从其他论坛中了解到,例如:
Delphi Multi-Threading Message Loop
可以在线程中处理消息,而无需为此目的创建Windows句柄;使用PostThreadMessage发布的消息。
然而,DataSnap TComponentFactory为每个RemoteDataModule创建一个TApartmentThread实例,它的Execute方法已处理消息:
while GetMessage(msg, 0, 0, 0) do
begin
DispatchMessage(msg);
Unk._AddRef;
if Unk._Release = 1 then break;
end;
我想让这个来处理我的任何自定义消息,意味着重写TApartmentThread Execute方法。
我已经确认创建一个窗口句柄来处理RemoteDataModule实例中的消息,可以使用此处描述的技术:
这使用了AllocateHWnd,由于其他人的工作,可以使其成为线程安全的:
How can I make AllocateHwnd threadsafe?
虽然这提出了一个解决方案,但我想问一下;是否有推荐的替代方法?