【发布时间】:2017-04-26 16:54:18
【问题描述】:
本周早些时候,我能够让 Delphi UDPClient 工作(在帮助下)。现在我需要在一个单独的单元和它自己的线程中运行客户端程序。是否有一个简单的例子或至少有人可以分享伪代码?我要避免在线程中使用 TForm,因为我将从线程中获取返回的数据并显示到 TMemo 字段中。我在完全定义我的 IdUPDClient 类型时遇到了具体问题。
【问题讨论】:
标签: multithreading delphi udpclient
本周早些时候,我能够让 Delphi UDPClient 工作(在帮助下)。现在我需要在一个单独的单元和它自己的线程中运行客户端程序。是否有一个简单的例子或至少有人可以分享伪代码?我要避免在线程中使用 TForm,因为我将从线程中获取返回的数据并显示到 TMemo 字段中。我在完全定义我的 IdUPDClient 类型时遇到了具体问题。
【问题讨论】:
标签: multithreading delphi udpclient
您可以使用 TTask 在单独的线程中运行一些代码,添加到使用 System.Threading。
TTask.run(procedure
var UDPClient : TIdUDPClient;
begin
UDPClient := TIdUDPClient.Create(self);
UDPClient.Host := 'put your host';
UDPClient.Port := 0;//PUT YOUR PORT
UDPClient.ReceiveTimeout := 5000;
UDPClient.BufferSize := 8192;
UDPClient.Active := True;
while True do //put your condition here
begin
//some code
//When you need to update the screen you should syncronize
TThread.Synchronize(TThread.CurrentThread, procedure
begin
form1.Memo1.Text := 'update';
end);
end;
UDPClient.DisposeOf;
end);
【讨论】:
TThread.Synchronize 中更新您需要的内容,您可以在form1.memo.text := 'update' 表单中更新备忘录或在数据模块datamodule1.update() 上调用过程等等...