C# 我让COM1保持打开状态后如何关闭它?

C# 我让COM1保持打开状态后如何关闭它?,c#,visual-studio,serial-port,C#,Visual Studio,Serial Port,我在Visual Studio C中工作,我打开了一个串行端口,但没有正确关闭它。现在我无法运行我的程序来尝试关闭它。我知道是我在使用它,但不知何故我失去了对它的控制。。?有没有其他方法可以关闭它 我已经尝试退出visual studio,但它仍然说我的访问被拒绝。我已经拔出并重新插入了我正在使用的实际对象。我的下一步是重新启动电脑,但我不想每次我搞砸的时候都要重新启动电脑,这是经常发生的事 另一方面,我在实验室工作,没有这台计算机的管理权限。另一个注意事项是,错误文本是对端口“COM1”的访问

我在Visual Studio C中工作,我打开了一个串行端口,但没有正确关闭它。现在我无法运行我的程序来尝试关闭它。我知道是我在使用它,但不知何故我失去了对它的控制。。?有没有其他方法可以关闭它

我已经尝试退出visual studio,但它仍然说我的访问被拒绝。我已经拔出并重新插入了我正在使用的实际对象。我的下一步是重新启动电脑,但我不想每次我搞砸的时候都要重新启动电脑,这是经常发生的事

另一方面,我在实验室工作,没有这台计算机的管理权限。另一个注意事项是,错误文本是对端口“COM1”的访问被拒绝

对于那些要求代码的人,。。动作开放;你还在找什么

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();
}

简而言之,我在调试过程中结束了调试,而调试过程似乎正在进行中。这就是我所知道的一切。

您可能需要重新启动以清除此问题,尽管一种方法是使用并搜索\Device\Serial0的句柄。然后,您可以看到关闭此句柄是否有效,但可能无效

为了防止将来发生这种情况,需要将comPort.Close调用放在finally块中:


请添加用于打开和关闭的代码。这是真正的COM端口还是USB适配器?另外,您使用的是哪个版本的.NET framework?我使用的是一个真正的COM端口,我使用的是.NET 4。它不是这样工作的,如果您忘记了,Windows将始终关闭一个端口。也许你的程序还在运行?如果使用线程,请使用Thread.IsBackground。蹩脚的USB驱动程序也是一个常见的祸害。@HansPassant:一种可能是vshost实例被困在后台,引用了COM端口。
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();
}