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 отключен и удален из диспетчера устройств.

Любое предложение, чтобы решить эту проблему?

0 ответов

Другие вопросы по тегам