铁
铁盒子
Unregistered / Unconfirmed
GUEST, unregistred user!
TThreadDM = class(TThread)
constructor Create(CreateSuspended: Boolean);
procedure Execute;
Override;
end;
constructor TThreadDM.Create(CreateSuspended: Boolean);
begin
Create(CreateSuspended);
FreeOnTerminate := False;
end;
procedure TThreadDM.Execute;
begin
Dm.Connect;
Terminate;
end;
//DM是全局变量,从TObject继承下来的,用到了TClientDataSetConnect,connect连接到数据库
主程序
var
frmMain: TfrmMain;
thDM: TThreadDM;
begin
Application.Initialize;
DM := TDM.Create;
thDM := TThreadDm.Create(True);
thDM.Resume;
LoginInput(Application.Handle, DM.User);//输入用户名和密码
thDm.WaitFor;
DM.Login;
....
end
意思就是在用户输入密码时在另一个线程中连接数据库,加快启动速度 。现在TThreadDM.Execute中如果Synchronize(DM.Connect),则要到线程执行完,才能正常输入用户名和密码,如果不用Synchronize则不能正常连接数据库!
怎样才能另一线程连接数据库时,主线程正常输入?
constructor Create(CreateSuspended: Boolean);
procedure Execute;
Override;
end;
constructor TThreadDM.Create(CreateSuspended: Boolean);
begin
Create(CreateSuspended);
FreeOnTerminate := False;
end;
procedure TThreadDM.Execute;
begin
Dm.Connect;
Terminate;
end;
//DM是全局变量,从TObject继承下来的,用到了TClientDataSetConnect,connect连接到数据库
主程序
var
frmMain: TfrmMain;
thDM: TThreadDM;
begin
Application.Initialize;
DM := TDM.Create;
thDM := TThreadDm.Create(True);
thDM.Resume;
LoginInput(Application.Handle, DM.User);//输入用户名和密码
thDm.WaitFor;
DM.Login;
....
end
意思就是在用户输入密码时在另一个线程中连接数据库,加快启动速度 。现在TThreadDM.Execute中如果Synchronize(DM.Connect),则要到线程执行完,才能正常输入用户名和密码,如果不用Synchronize则不能正常连接数据库!
怎样才能另一线程连接数据库时,主线程正常输入?