• c#的SerialPort在多线程环境下需要加锁


    在使用c#用串口和下位机通信的时候,为了不让io阻塞ui进程,都会新开个线程来处理串口io。在多个线程同时读取串口的情况下,经过测试,需要加锁,否则会出现各种各样奇奇怪怪的运行时异常。SerialPort本身的实现是线程不安全的。

    我写了个c#的小程序来测试,用python不断的发送类似于'00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89'的字符串,以 作为分界符,让c#开两个线程来同时读同一个串口。

    加锁的情况下,读取十分稳定。你拍一我拍一。

     不加锁的情况下,serialport的readto方法有时候会发生运行时异常,也有时候会如上图那样,不能正确分割和读取字符串。

  • 相关阅读:
    JQuery新浪1630个表情插件
    时间轴Jquery特效
    微博分享Jquery插件
    分享一款解析json数据包获取全国学校Jquery特效
    视频播放插件
    如何将word中的数据导入到数据库中
    在留资格到了
    090310 晴
    090306 雨
    胃的保养
  • 原文地址:https://www.cnblogs.com/digdig/p/13746127.html
Copyright © 2020-2023  润新知