首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

如何样在线程外部结束掉WaitCommEvent()等待事件

2012-09-11 
怎么样在线程外部结束掉WaitCommEvent()等待事件?代码如果下:voidExitComRecvThread( HANDLE hCom ){//注:

怎么样在线程外部结束掉WaitCommEvent()等待事件?
代码如果下:

void ExitComRecvThread( HANDLE hCom )
{
  //注:是接受程序自己调用该函数,不是串口的另外发送端的有关事件
  //能够让程序运行到A或者B,这样就可以控制前面的线程退出
  ?????
}
unsigned __stdcall GCmnCom::__RecvThrd( void* pParam )
{
unsigned long lEnt = 0;
  HANDLE hCom = (HANDLE)pParam;
DWORD dwEvent = EV_BREAK | EV_CTS | EV_DSR | EV_ERR | EV_RING | EV_RLSD | EV_RXCHAR | EV_RXFLAG | EV_TXEMPTY ;
SetCommMask( dwEvent );

while( TRUE )
{
if ( ::WaitCommEvent( m_hDevice, &lEnt, 0 ) )
{
if ( lEnt & EV_RXCHAR )
{
// read data....
} else {
//A
}
} else {
//B
}
}
return 0;
}
}


[解决办法]
关闭端口应该可以吧
[解决办法]
最好用异步模式
[解决办法]
原来这个意思,那为什么不能用异步呢,你也应该知道直到等待事件发生为止,函数WaitCommEvent是不会返回的。
你可以试试开启个定时然后与那条线程通讯,当那条线程一定时间无响应时,强制结束他,然后重新启动个线程,看看可行否。

热点排行