文件名称:微软SerialPort秘籍[SerialPort为什么死锁程序的分析]
文件大小:33KB
文件格式:DOC
更新时间:2012-03-31 02:21:15
SerialPort 死锁 程序分析 微软
微软 MS 死机 SerialPort CE 既然是秘籍,显然是写一些大家不常找到的,MSDN里遗漏提示大家注意的东西。 用过.net 2.0中,自带SerialPort的人,大多都遇到过。莫名其妙的执行Close的时候会死掉的问题。而Wince,mobile下,甚至Write,WriteLine的时候也会死锁。这和串口底层驱动有关。 1.Close的时候死机问题 我只是猜测,Close执行的操作是调用2个API: SetCommMask(m_hComPort,0); WaitForSingleObject(m_pThread->m_hThread,INFINITE); m_pThread=NULL; if(m_hComPort!=INVALID_HANDLE_VALUE) CloseHandle(m_hComPort); 这里的话,SetCommMask操作的时候。如果你的DeviceReceived事件没执行完,里面还有更新界面的操作。就会监听线程在等待,执行到界面操作,界面又要求关闭监听线程然后关闭串口。死锁了。