我有一个设备(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。
有任何解决此问题的建议吗?