我的程序框架是:
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回调函数。
不知是不是在回调函数的格式上有问题?需要修改回调函数?
如果这种方法行不通,不知大侠们有没有另外的好的方法,可以达到我的这样的需求:
每个线程,监测一个串口,半秒中读取一次对应串口的数据。