ObjectDisposedException: безопасный дескриптор был закрыт, когда USB отключен
У меня есть устройство (USB-> последовательный) и прикладное программное обеспечение (.NET 3.5), подключенный к COM-порту устройства. Существует функция, которая может перезагрузить устройство (выполняется путем отправки последовательной команды на устройство).
Проблема в, ObjectDisposedException
брошен System.dll
когда устройство перезагружено. (случайным образом выбрасываемый и неуловимый, хотя я завернул код в блок try-and-catch).
В Интернете я нашел некоторую информацию о том, что это исключение связано с тем, что внутренний объект потока SerialPort удаляется сборщиком мусора при исчезновении физического порта.
Я реализовал кодировку т.е. GC.SuppressFinalize(SerialPort)
а также GC.SuppressFinalize(SerialPort.BaseStream)
в функции подключения, а также GC.ReRegisterForFinalize
в функции отключения, как предложено здесь, но это не помогает устранить исключение ObjectDisposedException, когда USB отключен и удален из диспетчера устройств.
Любое предложение, чтобы решить эту проблему?