C#串口关闭Close()-线程卡死-解决方法

问题很简单:
1.设置isReceiving 标志位,判断串口读取线程是否在占用资源。
2.设置读写超时,防止卡死在Read()命令里

本人比较懒, 在代码关键修改位置标了/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/,供大家参考。希望能帮到大家0 0

 class CSerial
    {
        SerialPort myPort = null;

        //委托
        public event EventHandler Event_DataReceived;

        //接收的容器,不需理会
        private byte[] buffer = new byte[1024];
        List<byte> byteSource = new List<byte>() { };
        private byte[] byte_head = {
  0xff,0xff};

        private object locker = new object();//发送函数线程锁
        bool isReceiving = false;/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
        //构造函数
        public CSerial(string portName,int baudRate)
        {
            myPort = new SerialPort(portName,baudRate,Parity.None,8,StopBits.One);
            myPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
            myPort.ReadTimeout = 1000;/*!!!!!!!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值