新手花200分求答案,希望高手帮忙看看
当连不上数据库时,在ConnectionTimeout这段时间里我切换窗口,再切换回原来的程序窗口就无法接受消息 就是变成白色的框,如何解决这个问题。我已经将连数据库的工作放再后台线程执行了。但是还是无法解决这个问题。附部分代码
//线程执行部分代码
constructor TLinkThread.Create(const Link:string);
begin
strLink:=Link;
FreeOnTerminate := True;
inherited Create(False);
end;
procedure TLinkThread.DBLink;
begin
Synchronize(DoDBLink);
end;
procedure TLinkThread.DoDBLink;
begin
try
FrmAutoJob.ADODBbackup.ConnectionString:=strLink;
FrmAutoJob.ADODBbackup.Connected:=true;
FrmAutoJob.retu:=2;
except
on E: Exception do
begin
FrmAutoJob.retu:=1;
end;
end;
FrmAutoJob.ADODBbackup.Connected:=false;
end;
procedure TLinkThread.Execute;
begin
DBLink;
end;
{主程序执行部分代码 LoadFrm为连接数据库时的提示Form retu是主程序定义全局变量 整型}
LoadFrm:=TLoadFrm.Create(Application);
LoadFrm.Show;
LoadFrm.Update;
retu:=0;
TLinkThread.Create(gstrDBLink);
while retu=0 do
begin
Application.ProcessMessages ;
LoadFrm.Update ;
end; //在线程返回结果未出来时不运行下面的程序
if retu=1 then
begin
LoadFrm.Close;
Application.MessageBox('连接数据库失败,请重新配置参数','提示',MB_OK);
WindowState:=wsNormal;
CoolTrayIcon1.IconVisible:=false;
TabSheet5.Show;
end
else
LoadFrm.Close;
end;
还请各位高手赐教