关于DELPHI5多线程同步的问题
各位朋友大家好,本人刚开始研究多线程,还有很多不明白的地方,望大家指教,谢谢!
问题是这样的:
定义两个线程,当按钮连接时执行连接创建一个线程序,连接成功后执行查询按扭再创建一个线程,现在问题是查询线程
中无法利用 连接线程的SocketConnection1,如何同步呢?
部分代码如下:
定义:
type
Tthread1 = class(Tthread)
protected
procedure Execute;override;
procedure getSocketConn;
end;
type
Tthread2 = class(Tthread)
protected
procedure Execute;override;
procedure getClientDataSet;
end;
procedure Tthread1.Execute;
begin
Try
FreeOnTerminate:=true;
ConToolsFrm.SocketConnection1.ServerGUID:='{2C8E3F43-ABE4-11D4-B352-00E04C67568C}';
ConToolsFrm.SocketConnection1.ServerName:='apply_tier.Apply_data';
ConToolsFrm.SocketConnection1.Connected:=False;
ConToolsFrm.SocketConnection1.Host:= ConToolsFrm.edtHost.Text;
ConToolsFrm.SocketConnection1.Connected:=True;
ShowMessage('连接成功!');
Except
ShowMessage('连接失败,请断开后再试!');
ConToolsFrm.SocketConnection1.Connected:=False;
end;
end;
procedure Tthread2.Execute;
var
sqlStr:string;
begin
ConToolsFrm.ClientDataSet1.Close;
ConToolsFrm.ClientDataSet1.RemoteServer:=ConToolsFrm.SocketConnection1;
ConToolsFrm.ClientDataSet1.ProviderName:='provider7';
sqlStr:=ConToolsFrm.edtSql.Text;
ConToolsFrm.SocketConnection1.appserver.zyyf_pub_pro(sqlStr, 'o');
ConToolsFrm.ClientDataSet1.Open; //该部分直接跳走没有运行
if ConToolsFrm.ClientDataSet1.RecordCount=0 then
begin
if ConToolsFrm.FindProcess('apply_tier.exe') then //中间层正在运行
begin
//重启 SOCKET SERVER
ConToolsFrm.StartService('SocketServer');
//关闭apply_tier进程
ConToolsFrm.EndProcess('apply_tier.exe');
end;
end;
end;
//连接
procedure TConToolsFrm.btnConnectClick(Sender: TObject);
begin
mythread1:=Tthread1.Create(false);
end;
procedure TConToolsFrm.btnSelectClick(Sender: TObject);
begin
mythread2:=Tthread2.Create(false);
end;