ObjectDisposedException:USB拔下时已关闭安全句柄

时间:2017-10-30 09:38:08

标签: c# .net serial-port objectdisposedexception

我有一个设备(USB->串行)和连接到设备COM端口的应用软件(.NET 3.5)。有一个功能可以重启设备(通过向设备发送串行命令完成)。

问题是,ObjectDisposedException在重启设备时被System.dll抛出。 (即使我已经将代码包装在try-and-catch块中,也会随机抛出并且无法捕获)。

我在网上发现了一些信息,这个例外是由于当物理端口消失时,SerialPort的内部Stream对象被垃圾收集器处理掉了。

我已实施编码 即GC.SuppressFinalize(SerialPort)和  连接函数中的GC.SuppressFinalize(SerialPort.BaseStream), 还有GC.ReRegisterForFinalize断开功能 建议here 但是当USB被拔出并从设备管理器中删除时,它无助于解决ObjectDisposedException。

有任何解决此问题的建议吗?

0 个答案:

没有答案