Vista SP1 Visual Studio 2008 SP1 .NET 3.5 SP1 C#
我有一个我正在玩的 winforms 应用程序,它使用 SerialPort 对象作为私有变量。当应用程序被编译和执行时,它工作得很好。它也可以在没有任何断点的调试模式下运行。90% 的情况下,当我在断点处停止并尝试单步执行代码时,我会得到一个“出现未处理的异常”对话框,其中包含以下详细信息:
System.ObjectDisposedException 未处理 Message="Safe handle has been closed" Source="mscorlib" ObjectName="" StackTrace: at Microsoft.Win32.Win32Native.SetEvent(SafeWaitHandle handle) at System.Threading.EventWaitHandle.Set() at System。 IO.Ports.SerialStream.AsyncFSCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOverlapped) 在 System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) InnerException:
令人沮丧的是,我不必跳过与串行相关的代码!我只需要对端口做点什么。所以我可能会读取一个字符串,操作该字符串,将两个数字相加,无论如何,然后 BANG。
同样,在不调试时,或者在没有任何断点的情况下调试时,这工作得很好。似乎有一些关于在断点处停止的东西,这使得 CLR 在不同的线程上处理 SerialStream。
网上有很多关于更新 USB 设备导致此问题的讨论。但我使用的是 COM1 上的内置主板端口。
我认为我在 .NET 2.0 中没有这个问题,所以我可能不得不回到那个问题......
在发布代码之前,我需要稍微简化一下应用程序——但是之前有没有人在调试器中看到过这样的行为?
非常感谢!