读书人

难以捉摸的Timer解决方案

发布时间: 2012-02-08 19:52:21 作者: rapoo

难以捉摸的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;
}

读书人网 >C++ Builder

热点推荐