1.现象
在不断接收数据的过程中突然关闭串口可能出现UI卡死的问题。
2.解决方案
1.在 Close 方法处使用异步方式;
//打开串口
private async void btnOpenPort_Click(object sender, EventArgs e)
{
//判断端口是否打开--未打开则进行初始化信息配置
if (IsOpen == true)
{
try
{
//this.serialPort.Close();
//添加异步操作,防止卡死
await Task.Run(() => { this.serialPort.Close(); });
}
catch (Exception ex)
{
throw ex;
}
finally
{
this.serialPort.Dispose();//释放资源
IsOpen = false;
}
}
else
{
...
}
}
2.将 DataReceived 事件中的 Invorke 换成 BeginInvorke。
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (is

最低0.47元/天 解锁文章
316

被折叠的 条评论
为什么被折叠?



