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#在控制台程序中定义事件,应该怎么样?我看得不明白。 并列模糊查询问题·· 新手C#程序,请问错哪了,在线等。。。。。。。 异常消息: 填充无效,无法被移除。 高分急求!!!水晶报表分页问题!!!!!!!!! 水晶报表打印时表头总是居左,谁有办法居中,请指点一下 再问一个ActiveReport.Net的问题 新手求解--只读索引 高手请进,C#中能不能实现子类化? 调查,大家用C#主要用于什么开发?WEB,还是桌面 求教: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;
}