ich habe mal die entscheidende Routine aus der OnClick-Methode rauskopiert:
Delphi-Quellcode:
MDBCon:= TConnectThread.Create(false, DB_DataModul.ZConDBMaster, ini.MDBName,
INetHostAdress, ini.IniUserName, ini.IniUserPass,
ConPort);
MDBCon.WaitFor;
dann der Thread:
Delphi-Quellcode:
constructor TConnectThread.create(CreateSuspended: boolean; Connection: TZConnection;
DBName, Host, User, Pass:
String; ConPort: Integer;
const Protocol:
String = '
mysql-4.0');
begin
inherited create(CreateSuspended);
//Priority:= tpIdle;
freeOnTerminate:= false;
fErrCode:= -1;
fCon:= Connection;
fCon.Database:=DBName;
fCon.HostName:= Host;
fCon.User:= User;
fCon.Password:= Pass;
fCon.Port:= ConPort;
fCon.Protocol:= Protocol;
end;
procedure TConnectThread.Execute;
begin
{Try
fCon.Connected:= true;
fErrCode:= 0;
except
fErrCode:= 1;
end; }
Synchronize(Connect);
end;
anfangs hatte ich es ohne Synchronisation probiert, da keine
VCL-Komponenten in der Execute-Methode angesprochen werden. Die Synchronisation hat aber auch nix gebracht...die synchronisierte Connect-Methode enthält also den gleichen Code wie der ausgeklammerte Teil der Execute-Methode. Thread-Priority ändern hat auch nix gebracht...