Вы уверены, что проблема в SerialPort
, а не в драйвере устройства USB-Serial? Я бы попробовал еще один тест для проверки проблемы:
- Запуск
hyperterm
- Подключитесь к проблемному устройству
- Проверка использования памяти
- Отключение таким же образом, что вызывает проблемы в C #
- Проверить использование памяти и сравнить
Если этого не происходит, то, в частности, есть ошибка SerialPort
. Если это произойдет снова, вы, по крайней мере, будете знать, что это не имеет ничего общего с реализацией SerialPort
. Проблема может быть в коде COM-порта Windows или в используемом вами драйвере. Лично я считаю более вероятным, что проблема может быть в драйвере, но я хотел бы знать, есть ли какая-то неизвестная проблема с последовательными портами Windows.
Я использовал SerialPort
раньше при подключении / отключении портов без каких-либо проблем.
Еще одна вещь, которую вы можете попробовать отладить в коде CLR. Есть много других SO вопросов по этой теме , поэтому должно быть легко найти способ сделать это. Это должно позволить вам отладить немного дальше и точно определить, в какой момент в Open()
происходит утечка памяти. Предупреждение: поскольку это «простая» оболочка для последовательного порта системы, вы можете быстро увидеть, что она переходит в мир P / Invoke и, вероятно, не увидит много.