2012-01-16 32 views
1

私はVisual Studio C#で作業していますが、シリアルポートを開いていましたが、正しく閉じていませんでした。今私は私のプログラムを閉じてそれをしようとすることはできません。私はそれを使用していた私だと知っていますが、どういうわけか私はそれの制御を失った..?そうでなければそれを閉じる方法はありますか?COM1を開いたままにして、COM1を閉じるにはどうしたらいいですか?

私はVisual Studioから抜け出そうとしましたが、それでも私のアクセスは拒否されています。私は使用している実際のオブジェクトのプラグを差し込んで再度接続しました。私の次のステップは、コンピュータを再起動することですが、私はそれが頻繁に(私は頻繁にです!)

私はラップで働いていますこのコンピュータで管理者権限を持っている。別の注意点は、エラーのテキストが "ポート '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のハンドルを検索する方法がありますが、これをクリアするには再起動する必要があります。このハンドルを閉じると動作するかどうかを確認できますが、そうではない可能性があります。

将来的に起きてからこれを維持するために作業するには、あなたがfinally - ブロックでcomPort.Close()呼び出しを配置する必要があります。

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(); 
} 
関連する問題