M
Moved
Unregistered / Unconfirmed
GUEST, unregistred user!
[]
大家好!小弟我正学习多线程,现有一个问题请教: 在ADO查询或SP的OPEN时,是不是不能
同时执行多线程的代码? 我的代码如下:
unit frmGzcalc;
interface
uses
................
type
ThrdMsg=class(TThread)
protected
procedure Execute;override;
end;
TGzcalcForm = class(TForm)
Panel1: TPanel;
Label3: TLabel;
Label4: TLabel;
Label1: TLabel;
edtPersonID: TdxButtonEdit;
edtFirstDate: TDateTimePicker;
edtEndDate: TDateTimePicker;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
grdGzcalc: TdxDBGrid;
spGzcalc: TADOStoredProc;
dsGzcalc: TDataSource;
.....
.....
.....
private
{ Private declarations }
public
{ Public declarations }
end;
var
GzcalcForm: TGzcalcForm;
Msgtrd:ThrdMsg;
implementation
{$R *.dfm}
uses DataCenter, ChoicePerson,frmMsg, frmNoExist;
procedure ThrdMsg.Execute;
begin
MsgForm.Label1.Caption:='Wait ....';
end;
procedure TGzcalcForm.BitBtn1Click(Sender: TObject);
begin
spGzcalc.Close;
spGzcalc.Parameters[1].Value:=edtFirstDate.Date;
spGzcalc.Parameters[2].Value:=edtEndDate.Date;
spGzcalc.Parameters[3].Value:=edtPersonID.Text;
MsgForm:=TmsgForm.create(self);
Msgtrd:=ThrdMsg.Create(False);
MsgForm.Show;
MsgForm.update;
spGzcalc.open;
MsgForm.Hide;
MsgForm.Close;
MsgForm.Free;
end;
end.
以上代码的功能是:点击一个按钮后弹出一MsgForm窗口,然后打开存储过程,
按道理这个时候也会运行线程MsgTrd中的代码,但为什么没有运行呢。因为运行后MsgForm
的Label1.Caption会为"Wait....."啊? 还有我也使用过同步(Synchronize)也不行啊。
请教各位问题出在哪儿吗? 谢谢了,晚上结贴.....
大家好!小弟我正学习多线程,现有一个问题请教: 在ADO查询或SP的OPEN时,是不是不能
同时执行多线程的代码? 我的代码如下:
unit frmGzcalc;
interface
uses
................
type
ThrdMsg=class(TThread)
protected
procedure Execute;override;
end;
TGzcalcForm = class(TForm)
Panel1: TPanel;
Label3: TLabel;
Label4: TLabel;
Label1: TLabel;
edtPersonID: TdxButtonEdit;
edtFirstDate: TDateTimePicker;
edtEndDate: TDateTimePicker;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
grdGzcalc: TdxDBGrid;
spGzcalc: TADOStoredProc;
dsGzcalc: TDataSource;
.....
.....
.....
private
{ Private declarations }
public
{ Public declarations }
end;
var
GzcalcForm: TGzcalcForm;
Msgtrd:ThrdMsg;
implementation
{$R *.dfm}
uses DataCenter, ChoicePerson,frmMsg, frmNoExist;
procedure ThrdMsg.Execute;
begin
MsgForm.Label1.Caption:='Wait ....';
end;
procedure TGzcalcForm.BitBtn1Click(Sender: TObject);
begin
spGzcalc.Close;
spGzcalc.Parameters[1].Value:=edtFirstDate.Date;
spGzcalc.Parameters[2].Value:=edtEndDate.Date;
spGzcalc.Parameters[3].Value:=edtPersonID.Text;
MsgForm:=TmsgForm.create(self);
Msgtrd:=ThrdMsg.Create(False);
MsgForm.Show;
MsgForm.update;
spGzcalc.open;
MsgForm.Hide;
MsgForm.Close;
MsgForm.Free;
end;
end.
以上代码的功能是:点击一个按钮后弹出一MsgForm窗口,然后打开存储过程,
按道理这个时候也会运行线程MsgTrd中的代码,但为什么没有运行呢。因为运行后MsgForm
的Label1.Caption会为"Wait....."啊? 还有我也使用过同步(Synchronize)也不行啊。
请教各位问题出在哪儿吗? 谢谢了,晚上结贴.....