难以捉摸的Timer
一个Timer的时间间隔设置为1s,然后在其中放入如下代码:
MessageDlg(IntToStr(i),mtInformation, TMsgDlgButtons() << mbOK, 0);
i++;
我在一个Button1的click函数中测试了一下,MessageDlg要等用户点击ok后才返回,才能继续执行后面的代码。
可是上面的Timer程序运行时,会连续弹出对话框,以此提示1、2、3……
为什么?
[解决办法]
不是多线程。Timer占用的是主线程。
[解决办法]
这样也行:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
static bool Enter = false;
if( Enter )return;
Enter = true;
MessageDlg(IntToStr(i),mtInformation, TMsgDlgButtons() << mbOK, 0);
i++;
Enter = false;
}