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

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

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

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

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

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

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

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

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

  • 相关阅读:
    CentOS7安装注意
    ES插件安装
    CentOS7命令
    ES安装手册
    五 、redis-cluster java api
    四 、Redis 集群的搭建
    三 redis 的 java api(jedis)
    C#验证码 使用GDI绘制验证码
    云时代架构阅读笔记二——Java性能优化(二)
    【转载】Asp .Net Web Api路由路径问题
  • 原文地址:https://www.cnblogs.com/polar-lights/p/8806444.html
Copyright © 2011-2022 走看看