【发布时间】:2014-10-17 18:27:05
【问题描述】:
我似乎无法弄清楚我做错了什么,我有以下代码将文件上传到 ftp,它在一个新线程上,我如何告诉它等待上传完成之前继续?
procedure TFTPThread.Execute;
begin
FTPClient.Host:=FTPAddress;
FTPClient.Username:=FTPUsername;
FTPClient.Password:=FTPPassword;
FTPClient.Connect;
FTPClient.Put(ZipFileName,'Logs.zip');
FTPClient.Quit;
FTPClient.Disconnect;
end;
我在网上找到了这个,但我不确定我做错了什么:
此处无法访问 E2233 属性“句柄”
while WaitForSingleObject(TFTPThread.Handle, 0) = WAIT_TIMEOUT do
Application.ProcessMessages;
【问题讨论】:
-
如果要等待,为什么要使用线程?您应该使用处理线程的事件驱动解决方案
-
您没有显示您持有对线程的引用的位置。如果你有一个,你写 Thread.WaitFor。正如 Rufo 爵士所说,你为什么要使用线程然后进行同步。如果您真的想处理消息并等待,请使用非繁忙循环正确执行。那将是 MsgWaitForMultipleObjects。但是事件驱动更好。处理 OnTerminate。
标签: multithreading delphi ftp delphi-xe