六个100ms定时器,要求能够同时计时互不影响,用SetTimer(TIMER[t],100,NULL)和OnTimer(UINT nIDEvent)不能够实现,是消息阻塞吗?有什么解决的方法?看到有大虾提到timeSetEvent、GetTickCount,可以吗?
解决方案 »
- vs2010 algorithm 在VC++环境中报错
- VC POINTS结构体
- MessageBox中lptext格式化输出的问题
- 怎样调试这样的程序代码?说得详细一点。有满意答案后马上结贴
- VC 系统菜单问题
- 由于应用程序配置不正确,程序未能启动,重新安装应用程序可能会纠正这个问题。
- 从“DWORD”转换为“LPCTSTR”
- VC的菜单栏,工具栏全部消失怎么办,重装也没用?
- 各位高手,请问用MFC ODBC怎样执行oracle存储过程? 急着交作业!!!
- 怎样更改目录名?
- 超级奇怪的问题。类中一声明变量就无法运行
- 我写了一个 多线程 + SOCKET 的程序,但存在严重逻辑错误,请大家帮忙说一下
用的时候
OnTimer(UINT nIDEvent)
{
//在这里判断nIDEvent
if( nIDEvent==TIMER[0])//第一个定时器
else if( nIDEvent==TIMER[1])//第二个定时器
//.etc
}
还要六个?不知道做什么需要这么多定时器。
但肯定程序的思路有改进的余地
========================
因为系统的计时单位大约在15~18ms之间。
===================================定时精度和所用的操作系统有关.95、98、nt等是不同的。
现在问题是我单步调试程序没问题,可是运行就没有正确的结果也不想是死机。
除了CWND类负责界面,还建了一个全局工作者线程执行后台任务,当线程里加入Sleep(1500)
后就有正常反应了,去掉或是将睡眠时间缩短都不可以,不知道为什么?代码如下:
UINT RunProc( LPVOID pParam )
{ ……
while(!isrun)
{
Sleep(1);
if(!len)
m_cmd=cmd;
len=m_cmd.GetLength();
while(len>0)
{
Sleep(1500);//问题!!
cmd_top=m_cmd.Left(m_cmd.Find('\r'));
……
}