0
本週早些時候,我得到了一個Delphi UDPClient的工作(在幫助下)。現在我需要在一個單獨的單元和它自己的線程中運行客戶端過程。有沒有一個簡單的例子,或至少有人可以分享的僞代碼?我是爲了避免在線程中使用TForm,因爲我將從線程獲取返回的數據並顯示到TMemo字段中。我有完全定義我的類型IdUPDClient的具體問題..UDPClient在單獨的線程中Delphi
本週早些時候,我得到了一個Delphi UDPClient的工作(在幫助下)。現在我需要在一個單獨的單元和它自己的線程中運行客戶端過程。有沒有一個簡單的例子,或至少有人可以分享的僞代碼?我是爲了避免在線程中使用TForm,因爲我將從線程獲取返回的數據並顯示到TMemo字段中。我有完全定義我的類型IdUPDClient的具體問題..UDPClient在單獨的線程中Delphi
您可以使用一個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);
謝謝。如果我想要返回值顯示在TMemo中,我如何訪問Task.run返回。我知道技術上的程序不會返回值,但是我仍然可以捕獲輸出。我知道在C或甚至Perl我可以。 –
只需更新'TThread.Synchronize'內需要的內容,就可以更新Form1.memo.text:='update''形式內的備忘錄或調用datamodule'datamodule1.update()'等的過程... – Kohull