两条腿走路(50分)

  • 主题发起人 主题发起人 wooosir
  • 开始时间 开始时间
W

wooosir

Unregistered / Unconfirmed
GUEST, unregistred user!
在下面的代码中,我想实现Button1Click和Button2Click中的Delay交替执行,
实际上只有后触发的ButtonClick中的Delay执行,请各位帮忙看看。
procedure Delay(MSecs: Longint);
var
start,Now: Longint;
begin
start:=GetTickCount;
repeat
Application.ProcessMessages;
Now:=GetTickCount;
until(Now-start>=MSecs) or (Now<start);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
while truedo
delay(550);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
while truedo
delay(550);
end;

 
老大,当然是随后触发谁执行了!
建议:开两个线程,不就行了吗!
 
后触发的Delay如果因某种原因(在循环中设条件)停止,先触发的Delay还是会继续执行,即先触发的Delay没有被中断,而是在Application.processmessage处停住了,为什么会停在这里?
用多线程的思路我也试了一下,代码如下,但还是不能满足交替Delay,请各位援手!
Tdelay_thread = class(TThread)
public
procedure execute;
override;
protected
private
end;

procedure Tdelay_thread.execute;
begin
delay(550);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
d_t : Tdelay_thread;
begin
d_t := Tdelay_thread.Create(false);
while num1 < 5do
d_t.execute;

end;
procedure TForm1.Button2Click(Sender: TObject);
var
d_t : Tdelay_thread;
begin
d_t := Tdelay_thread.Create(false);
while truedo
d_t.execute;
end;

 
这也叫多线程?????!!!!!
看来偶实力确实不够,还得尽补!呵呵!
 
问题解决了,散分
to mistjin: 上面的代码确实不是多线程,不过现在我已经会了。
 
后退
顶部