Timer的Tick事件问题 在Timer的Tick事件中写MessageBox.Show为什么会弹出多个对话框?MessageBox会阻断线程的运行啊,总不可能每次Tick事件都是一个线程吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://tech.sina.com.cn/s/2008-07-07/1635722555.shtml http://www.itwis.com/html/net/winform/20080402/1185.html 你好讨厌啊,我不小心刚测试了一下,果然一直弹窗口,只好结束任务了我觉得每一次tick都是重新调用的,所以messagebox阻断不了。 Timer是新创建了一个窗口,在这个窗口上创建的计时器,不和界面窗口共享消息循环,所以MessageBox阻断不了 TIMER好像不怎麼好,性能不好 MessageBox.Show和Application.DoEvent一样都泵送消息,也就会收到WM_TIMER消息了。一般模式窗口工作方式类似:EnableWindow(hParent, FALSE);while( GetMessage(&msg, NULL, 0, 0) ){ if( !quitDialg && !IsDialogMessage(hCurrentDlg, &msg) ) { TranslateMessage(&msg); DispatchMessage(&msg); }}EnableWindow(hParent, TRUE); click 事件中,先把timer1.stop(),MessageBox之后,再timer1.start() MessageBox.Show和Application.DoEvent一样都泵送消息,也就会收到WM_TIMER消息了。 因为Timer中的属性internal默认为50,也就是每50毫秒就会触发一次事件,当然会显示很多框框喽 form没有加入线程同步的设置,好像一个什么设置为false就好了 这个事件特殊,它是隔一定的时间久执行一次。的确你的messagebox是可以阻断后面的程序执行的,也就是消息框后面的程序没有执行。但是到了时间该事件却是再次执行。 private void timer1_Tick(object sender, System.EventArgs e){ timer1.Enabled=false;//如果不先把enabled设置成false对话框会一直弹下去 MessageBox.show("提示信息"); timer1.Enabled=true;} Tick是定时触发。你可以在事件中做必要的限定只触发你需要的次数。 c#搜索pdf datagridview 绑定无显示 面向对象编程时如何实现报表 根据坐标计算面积的方法 关于mscomm接受信号的问题,大家来看看吧 用c#建立的“Web控制項程序庫”程序怎樣調用com組件?郁悶我很久了!!!幫幫忙! C#中能否用DataSocket传输视频 设置按钮为热键?(在asp.net中用c#编写) 能不能解释一下这个表达式什么意思吗,怎样用语言表达 . 怎么样用C#创建一个文件的快捷方式???? 求教:XSD验证float值为NaN值,居然不报错,即使minInclusive value为0? 怎么 把数据库 备份 成 mdf 格式 ?
我觉得每一次tick都是重新调用的,所以messagebox阻断不了。
while( GetMessage(&msg, NULL, 0, 0) )
{
if( !quitDialg && !IsDialogMessage(hCurrentDlg, &msg) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
EnableWindow(hParent, TRUE);
private void timer1_Tick(object sender, System.EventArgs e)
{
timer1.Enabled=false;//如果不先把enabled设置成false对话框会一直弹下去
MessageBox.show("提示信息");
timer1.Enabled=true;
}