zoukankan      html  css  js  c++  java
  • c# 串口关闭死机

      用C#编写的wince串口通信程序基本大功告成了,与之前用API函数和线程来做串口通信不同,这次直接使用SerialPort控件来做,原本以为使用控件做会简单和方便许多,没成想,还遇到了很多麻烦。

           通信协议解析判断、控件数据更新显示等等都没有给我造成什么障碍,却偏偏在“关闭串口”这个地方卡壳了。

           在网上看了很多帖子,发现遇到这一问题的人还比较多,按他们的建议和方法都试过了,比如,加close和dataReceive接收标志的方式,或者close之后再Dispose释放资源,或者Application.DoEvents()处理完所有信息再close.............试了能想到的所有办法,最终都试验失败,该死机还是会死机,只是之前,第一次关机就会卡住不动,现在是多次重复开关机才会死机。虽然这些办法有效果有改善,但是并没有解决问题。

           在这一问题上停滞了2天之后,今天终于找到了解决问题的办法!

           原本串口接收事件中含有invoke来执行委托:Invoke(.............  , ...........);

           这种方式会阻塞当前的线程,会阻塞串口的关闭。

           将invoke改为BeginInvoke来执行委托:BeginInvoke(.............  , ...........);

           就不会出现关闭串口的时候死机、卡住不动的情况了。

  • 相关阅读:
    JavaWeb_day06_Filter过滤器
    JavaWeb_day05cookie_session_HttpSession
    接口(实例)演示
    FA常用表
    外连接简要总结
    项目操作习惯个人需养成的点
    接口的一般建立过程
    FA模块对折旧的个人理解
    Over分析函数的用法
    html报表 form端提交请求的制作
  • 原文地址:https://www.cnblogs.com/polar-lights/p/8806444.html
Copyright © 2011-2022 走看看