在程序中设定Timer函数2秒执行一次,但是在Timer中调用另外一个函数A,这个函数A执行的时间可能比较长,这样就造成了有可能函数A还没执行完就被Timer函数中断,有没有可能让函数A完全执行完毕了(不被Timer中断)?
解决方案 »
- 求大侠帮助!创建excel服务失败原因!!!
- 【求助】SDK创建的状态栏怎么不显示???
- 求两句正则表达式语句,用于解析字幕文件的。
- 求《programming windows with mfc》作者: Jeff Prosise 电子书下载,谢谢!
- 为播放多桢动画,先设定了时间间隔(SetTimer)(但实际上此时我们并不知道真正需要多少时间),于是,系统发出了一个个时钟消息,而我们
- 调用VB写的ActiveX DLL时候返回值问题
- 如何得到状态条的高度???
- 怎样在static成员函数中使用非static成员变量?
- 如何用vc++在windows环境下显示.img,.tif文件
- MFC自定义菜单栏在部分电脑上显示出现问题
- 关于error LNK2005错误的问题。
- VS2008在编译时,无法打开程序数据库文件? 请问怎么解决?
否则不可能出现A还没执行完就被Timer中断,都是按顺序执行的
{
static bool bRuning = false;
if (bRuning)
{
return;
}
else
bRuning = true; // 干活 bRuning = fasle;
}
你只能设置Timer是执行一次,当你在Timer中调用A完成后,再设置一个只运行一次的Timer
=================
实际情况是A肯定会被执行完,Timer如果处理的速度比定时器消息的速度慢的话,后来的消息会并合并。不要忘记了,Timer并不是多线程执行的,它还是单线程的。
//在进入timer的时候,KillTimer();
//等函数执行完了,在SetTimer();
//如果要稍微都接近2秒一次的话,KillTimer后,记录时间,函数执行完后,也记录时间,算出函数的执行时间,在算出SetTimer的interval。
可以实现等待线程处理完后,
再继续向下执行的功能。
如楼上所说的,置一个标志位,也不错。
应该不会被中断才对
你的这个timer片段如果不返回的话
不会触发下一个a的事件
http://www.programmer-club.com.tw/ShowSameTitleN/vc/37102.html