【发布时间】:2011-10-05 05:56:41
【问题描述】:
Indy UDP 服务器组件似乎依赖于 Windows 消息,因为我看到只有当鼠标光标移到包含服务器组件的表单上时才会出现新消息。
我在运行时使用以下代码创建了组件:
private
{ Private declarations }
Srv: TIdUDPServer;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
Srv := TIdUDPServer.Create(Self);
Srv.DefaultPort := 9009;
Srv.OnUDPRead := Self.udpServerUDPRead;
Srv.Active := True;
end;
我更喜欢控制台或服务应用程序。我是否需要一个(不可见的)窗口句柄 + 一些 Windows 消息队列代码才能使该组件正常工作?
更新:一些(非官方)documentation 说:
TIdUDPServer 在活动时创建一个监听线程来监听 入站 UDP 数据包。 ... 当 ThreadedEvent 为 false 时,OnUDPRead 事件将在主程序线程的上下文中触发。什么时候 ThreadedEvent 为 true,OnUDPRead 事件在上下文中触发 侦听器线程。
【问题讨论】:
-
不依赖windows消息。