Правильное освобождение последовательного порта

Я пишу приложение на C #, которое использует класс SerialPort для связи с несколько устройств. Теперь большая проблема, с которой я сталкиваюсь все время, заключается в том, как правильно освободить там ресурсы, поскольку вы сразу получаете исключение при попытке использовать уже используемый последовательный порт.

Поскольку обычно GC должен позаботиться о большую часть работы я я вроде как без идей, что еще попробовать ...

В основном я пробовал 2 вещи, которые (по моей логике) должны работать. Я использую связь на основе сеанса, поэтому я вызываю OpenPort и метод ClosePort до и после каждого сеанса связи, поэтому порт должен быть закрыт. Также я попытался установить для своего объекта, содержащего порт, значение null после этого - но все же я все время получаю UnauthorizedAccessExceptions , хотя я на 100 процентов уверен, что метод SerialPort.Close () был вызван.

Ребята, знаете ли вы какие-нибудь лучшие способы освободить порты, чтобы я перестал получать это исключение?

РЕДАКТИРОВАТЬ: поэтому я вызываю методы OpenPort и ClosePort до и после каждого сеанса связи - поэтому порт должен быть закрыт. Также я попытался установить для своего объекта, содержащего порт, значение null после этого - но все же я все время получаю UnauthorizedAccessExceptions , хотя я на 100 процентов уверен, что метод SerialPort.Close () был вызван.

Ребята, знаете ли вы какие-нибудь лучшие способы освободить порты, чтобы я перестал получать это исключение?

РЕДАКТИРОВАТЬ: поэтому я вызываю методы OpenPort и ClosePort до и после каждого сеанса связи - поэтому порт должен быть закрыт. Также я попытался установить для своего объекта, содержащего порт, значение null после этого - но все же я все время получаю UnauthorizedAccessExceptions , хотя я на 100 процентов уверен, что метод SerialPort.Close () был вызван.

Ребята, знаете ли вы какие-нибудь лучшие способы освободить порты, чтобы я перестал получать это исключение?

РЕДАКТИРОВАТЬ: )

7
задан dsolimano 27 February 2013 в 13:24
поделиться