//我想实现在线程连接ftp,如果连接失败,则退出程序,在我的代码中的TMYFTP.Execute过程中想实现
//该功能,但执行application.Terminate程序根本没有退出,我该怎样写
TMYFTP = class(TThread)
private
FTP: TIdFTP;
protected
procedure Execute; override;
public
constructor Create(FTP1: TIdFTP);
end;procedure TMYFTP.Execute;{ 执行线程的方法 }
begin
try
FTP.Connect();
except
showmessage('连接失败!');//如果连接失败,该句可以成功提示!
application.Terminate; //但如果ftp连接失败,运行该句,系统根本不退出,我该怎样写?
end;
end;constructor TMYFTP.Create(FTP1: TIdFTP);
begin
FTP := FTP1;
inherited Create(true);
FreeOnTerminate := TRUE;
end;procedure TForm1.Button1Click(Sender: TObject);
VAR
I :INTEGER;
FTPP: TMYFTP;
IDFTP: Tidftp;
begin
IDFTP := Tidftp.Create(NIL);IDFTP.Host := '10.16.0.1';IDFTP.Port := 21000;
IDFTP.Password :='iocmanager';
IDFTP.User := 'ioc';
TRY
FTPp := TMYFTP.Create(IDFTP); // idftp1
FTPp.Resume;
EXCEPT
showmessage('创建线程失败!!');
END;
end;
//该功能,但执行application.Terminate程序根本没有退出,我该怎样写
TMYFTP = class(TThread)
private
FTP: TIdFTP;
protected
procedure Execute; override;
public
constructor Create(FTP1: TIdFTP);
end;procedure TMYFTP.Execute;{ 执行线程的方法 }
begin
try
FTP.Connect();
except
showmessage('连接失败!');//如果连接失败,该句可以成功提示!
application.Terminate; //但如果ftp连接失败,运行该句,系统根本不退出,我该怎样写?
end;
end;constructor TMYFTP.Create(FTP1: TIdFTP);
begin
FTP := FTP1;
inherited Create(true);
FreeOnTerminate := TRUE;
end;procedure TForm1.Button1Click(Sender: TObject);
VAR
I :INTEGER;
FTPP: TMYFTP;
IDFTP: Tidftp;
begin
IDFTP := Tidftp.Create(NIL);IDFTP.Host := '10.16.0.1';IDFTP.Port := 21000;
IDFTP.Password :='iocmanager';
IDFTP.User := 'ioc';
TRY
FTPp := TMYFTP.Create(IDFTP); // idftp1
FTPp.Resume;
EXCEPT
showmessage('创建线程失败!!');
END;
end;
例如:
procedure TMYFTP.Execute;
begin
try
FTP.Connect();
ReturnValue := 0;
except
ReturnValue := -1;
end;
end;则在主线程可以这么做:
procedure TForm1.Button1Click(Sender: TObject);
VAR
I :INTEGER;
FTPP: TMYFTP;
IDFTP: Tidftp;
begin
IDFTP := Tidftp.Create(NIL);IDFTP.Host := '10.16.0.1';IDFTP.Port := 21000;
IDFTP.Password :='iocmanager';
IDFTP.User := 'ioc';
TRY
FTPp := TMYFTP.Create(IDFTP); // idftp1
FTPp.Resume;
if FTPp.waitFor = -1 then //Waitfor返回ReturnValue的值;当然Waitfor的时候,程序不能动了。整体构架需要改变。
Close;//主窗体关闭,则程序自动结束。
EXCEPT
showmessage('创建线程失败!!');
END;
end;但是从你的架构来看,怪怪的。