微软SerialPort秘籍[SerialPort为什么死锁程序的分析]

时间:2012-03-31 02:21:15
【文件属性】:

文件名称:微软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事件没执行完,里面还有更新界面的操作。就会监听线程在等待,执行到界面操作,界面又要求关闭监听线程然后关闭串口。死锁了。


网友评论

  • 分析得很好
  • 分析的有道理,但是还是没能解决我的问题