procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
try
...
finally
Timer1.Enabled := True;
end;
end;
你可以这样做。
begin
Timer1.Enabled := False;
try
...
finally
Timer1.Enabled := True;
end;
end;
你可以这样做。
按常理来说,中断当前的执行是十分危险的。我的参考是李维的delphi深度历险
80页,说“
WM_PAINT和WM_TIMER都属于低优先权的窗口消息,只有在队列没有消息的时候才会被取出,另外,一个队列绝不会同时含有超过一个WM_PAINT和WM_TIMER消息,若上回触发的事件还未被处理,新的消息就不会进入队列而是直接被舍弃……”
(这本书写的是基于Win3.1的,但我认为它的机制不会改变很多)
按常理来说,中断当前的执行是十分危险的。我的参考是李维的delphi深度历险
80页,说“
WM_PAINT和WM_TIMER都属于低优先权的窗口消息,只有在队列没有消息的时候才会被取出,另外,一个队列绝不会同时含有超过一个WM_PAINT和WM_TIMER消息,若上回触发的事件还未被处理,新的消息就不会进入队列而是直接被舍弃……”
(这本书写的是基于Win3.1的,但我认为它的机制不会改变很多)谢谢您的详细解说!Thank you!