N
netbug
Unregistered / Unconfirmed
GUEST, unregistred user!
1:下面的程序只有一个线程:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for I:=0 to 5000do
edit1.text:=inttostr(i);
end;
我想看到的是:edit1中的text属性在从小到大不停的变化,可我看到的是只有当程序结束时,
edit1中的text属性值为5000,而没有看到中间的变化值,如想看到中间的变化值,我该
怎么办?
2:以下的程序是有两个线程,当我按button1时,启动两个线程,当我按button2时,暂停线程1:
type
TMythread1=class(TThread)
procedure counter;
procedure Execute;override;
end;
procedure TMythread1.counter;
var i:integer;
begin
for i:=0 to 5000do
form1.edit1.text:=inttostr(i);
end;
procedure TMythread1.Execute;
begin
synchronize(counter);
end;
type
TMythread2=class(TThread)
procedure counter;
procedure Execute;override;
end;
procedure TMythread2.counter;
var i:integer;
begin
for i:=0 to 10000do
form1.edit2.text:=inttostr(i);
end;
procedure TMythread2.Execute;
begin
synchronize(counter);
end;
var
mythread1:TMythread1;
mythread2:TMythread2;
procedure TForm1.Button1Click(Sender: TObject);
begin
mythread1:=TMythread1.create(false);
mythread2:=TMythread2.create(false);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
mythread1.suspend;
end;
可是当我按button1启动两个线程后,立即按button2,程序不响应,一直到两个线程结束时才
响应button2,请问:这是为何?如何解决?
3:据说:线程是在后台运行的,那我想建两个或两个以上的线程,有一个在前台,其余在
后台,是否有什么方法?(如:我想建一个程序,是关于数据库录入、计算等。其中数据录入
必须在前台,而计算等放在后台,该如何做?)
谢谢。
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for I:=0 to 5000do
edit1.text:=inttostr(i);
end;
我想看到的是:edit1中的text属性在从小到大不停的变化,可我看到的是只有当程序结束时,
edit1中的text属性值为5000,而没有看到中间的变化值,如想看到中间的变化值,我该
怎么办?
2:以下的程序是有两个线程,当我按button1时,启动两个线程,当我按button2时,暂停线程1:
type
TMythread1=class(TThread)
procedure counter;
procedure Execute;override;
end;
procedure TMythread1.counter;
var i:integer;
begin
for i:=0 to 5000do
form1.edit1.text:=inttostr(i);
end;
procedure TMythread1.Execute;
begin
synchronize(counter);
end;
type
TMythread2=class(TThread)
procedure counter;
procedure Execute;override;
end;
procedure TMythread2.counter;
var i:integer;
begin
for i:=0 to 10000do
form1.edit2.text:=inttostr(i);
end;
procedure TMythread2.Execute;
begin
synchronize(counter);
end;
var
mythread1:TMythread1;
mythread2:TMythread2;
procedure TForm1.Button1Click(Sender: TObject);
begin
mythread1:=TMythread1.create(false);
mythread2:=TMythread2.create(false);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
mythread1.suspend;
end;
可是当我按button1启动两个线程后,立即按button2,程序不响应,一直到两个线程结束时才
响应button2,请问:这是为何?如何解决?
3:据说:线程是在后台运行的,那我想建两个或两个以上的线程,有一个在前台,其余在
后台,是否有什么方法?(如:我想建一个程序,是关于数据库录入、计算等。其中数据录入
必须在前台,而计算等放在后台,该如何做?)
谢谢。