C#Winform + RFID刷卡串口通信老是卡死 您所在的位置:网站首页 串口工具是啥 C#Winform + RFID刷卡串口通信老是卡死

C#Winform + RFID刷卡串口通信老是卡死

2023-05-20 03:05| 来源: 网络整理| 查看: 265

需求:

在登录界面通过RFID刷卡然后实现自动登录

问题:

在登录界面通过RFID刷卡然后实现自动登录,一刷卡就会卡死。但是手动输入账号登录却没有问题。

原因:

原来RFID刷卡在serialPort_DataReceived方法中触发回调函数的时候,需要给登录界面用户ID赋值,然后自动点击登录按钮的时候,在登陆按钮功能中需要把登录界面隐藏同时把RFID刷卡的功能关闭掉,此时就需要把登录界面绑定的SerialPort的端口号Close(),执行到这一步Close()的时候就会卡死。原因就是如果正在读取数据的时候,你去关闭串口,会卡死的。

解决方案:

代码:

Invoke会阻塞工作线程,也就是阻塞读取数据的线程。

private void ReceiveData(string str) { if (txt_UserAccount.InvokeRequired) { InvokeCallback d = ReceiveData; txt_UserAccount.Invoke(d, new object[] { str }); } else { } }

改善代码: BeginInvoke不会阻塞工作线程,也就是读取数据的线程立即完成。

private void ReceiveData(string str) { if (txt_UserAccount.InvokeRequired) { InvokeCallback d = ReceiveData; txt_UserAccount.BeginInvoke(d, new object[] { str }); } else { } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有