多线程中使用 timeSetEvent。求教高手!

ouyangzhongwen 2012-09-13 11:09:03
我的程序框架是:

C**Dlg::OnBtnOK()
{
AfxBeginThread(ReaderThread,¶m1); //新线程1,读取某串口的数据
AfxBeginThread(ReaderThread,¶m2); //新线程2,读取另一串口的数据
}

static UINT C**Dlg::ReaderThread(LPVOID param)
{
timeSetEvent(500,1,lpTimeProc,(DWORD)param,TIME_PERIODIC ); //半秒钟周期执行lpTimeProc回调函数。
}

void PASCAL lpTimeProc(UINT wTimerID, UINT msg,DWORD dwUser,DWORD dwl,DWORD dw2)
{
//在回调函数中 读取某串口数据。并插入到数据库,显示至界面
}

我跟踪调试出现的问题是:
线程1能顺利的运行。
线程2能启动,但是运行到timeSetEvent()后就结束了,并没有调用lpTimeProc回调函数。

不知是不是在回调函数的格式上有问题?需要修改回调函数?
如果这种方法行不通,不知大侠们有没有另外的好的方法,可以达到我的这样的需求:
每个线程,监测一个串口,半秒中读取一次对应串口的数据。
...全文
186 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧