间隔设置为 1 秒的 TTimer 每 1 秒发送一条消息。此消息在应用程序的消息循环中进行处理,从而触发 OnTimer 事件。
如果应用程序很忙并且没有时间处理消息循环,则跳过 OnTimer 事件。
我知道 TTimer 在内部使用SetTimer。
我的问题是:
- TTimer 是否使用内部/单独的线程(通过 SetTimer)?
- 如果模态 MessageDlg 正在“阻止”表单,那么保存计时器(甚至它的 OnTimer)的表单为什么仍然可以做事呢?(见下面的代码)
- 文档说 SetTimer 至少需要 Win2000。TTimer在Win98中是如何实现的?
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Caption = i;
i++;
MessageDlg(stuff); <----- we "block" application here but form's caption is still updated.
}