2012-01-16 5 views
1

Я работаю в Visual Studio C#, и я открыл серийный порт, но я не закрыл его должным образом. Теперь я не могу запустить свою программу, чтобы попытаться ее закрыть. Я знаю, что это я использовал, но почему-то я потерял контроль над этим.? Есть ли способ закрыть его в противном случае?Как закрыть COM1 после того, как я оставил его открытым?

Я пробовал выйти из визуальной студии, и он все еще говорит, что мой доступ запрещен. Я отключил и поменял фактический объект, который я использую. Мой следующий шаг - перезагрузить компьютер, но я не хочу этого делать каждый раз, когда я беспорядок (что часто бывает!)

На боковой ноте я работаю в лаборатории и не делаю имеют административный доступ на этом компьютере. Другое примечание: текст ошибки - «Доступ к порту« COM1 »отрицается».

В ответ тем, кто просит код, comPort.Open(); Что еще вы ищете?

private void updateAccuSwayData() { 
    Console.WriteLine("Update thread started..."); 
    comPort.Open(); 
    comPort.WriteLine("Q"); 
    Thread.Sleep(5); 
    while (!cancelRequested) { 
     //do stuff... 
    } 
    Console.WriteLine("Update thread halted."); 
    comPort.WriteLine("R"); 
    comPort.Close(); 
} 

В двух словах, я закончил свою сессию отладки в то время как это было в середине что-то кажется. Это все, что я знаю.

+2

Пожалуйста, добавьте код, который вы используете, чтобы открыть и закрыть его – Mharlin

+0

Является ли это реальным COM-порт или USB-адаптер? Кроме того, какую версию платформы .NET вы используете? – Brad

+0

Я использую настоящий COM-порт, и я использую .net 4 – agweber

ответ

3

Возможно, вам придется перезагрузить компьютер, чтобы устранить эту проблему, хотя одним из способов было бы использовать Process Explorer и искать ручку до \Device\Serial0. Затем вы можете увидеть, работает ли этот дескриптор, однако это может быть не так.

Чтобы сохранить это происходило в будущем, вам нужно поставить comPort.Close() вызов в finally -блоком:

try 
{ 
    comPort.Open(); 
    // ... 
} 
finally 
{ 
    // Almost always ensures the COM port will be cleaned up, 
    // however, the MSDN remarks state that the port may not 
    // be closed immediately. 
    comPort.Close(); 
} 
Смежные вопросы