问题描述
写的一个程序,WPF界面,与串口、相机等硬件设备通信,并将通信结果(包括图片等)显示在UI界面上。期间发现有串口被其他线程占用,在Debug模式下关闭程序后,程序无法退出等情况。
具体表现为:
(1)关闭程序后,下次再次启动程序,串口被占用,新的程序无法访问串口;表现为报串口异常:
“Access to the port ‘COM8’ is denied.
An exception of type System.UnauthorizedAccessException occurred and was caught.”
(2)有时候,关闭上一个程序后,程序未能完全退出:
(a)一种表现为虽然界面都关闭了,但是进程管理器中还有;
(b)另一种表现为,debug模式下运行程序。当把程序关闭后,VS还一直处于调试状态,无法退出程序,表示当前程序还在运行,VS下暂停程序,显示程序正在运行相机线程的销毁中,正在以下语句中等待,表明线程一直无法退出。
m_monitorThread.Join();
问题探索
随后,在网上搜索了类似情况。比较有用的有:
【1】C# 串口操作系列(2) – 入门篇,为什么我的串口程序在关闭串口时候会死锁
其中说