2012-01-16 97 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 2012-01-16 18:57:41

+0

代碼這是一個真正的COM端口還是USB適配器?另外,您正在使用哪種版本的.NET框架? – Brad 2012-01-16 18:58:15

+0

我正在使用一個真正的COM端口,並且正在使用.net 4 – agweber 2012-01-16 19:05:14

回答

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(); 
} 
相關問題