【发布时间】:2010-09-22 09:06:21
【问题描述】:
Vista SP1 视觉工作室 2008 SP1 .NET 3.5 SP1 C#
我有一个我正在玩的 winforms 应用程序,它使用 SerialPort 对象作为私有变量。当应用程序被编译和执行时,它工作得很好。它也可以在没有任何断点的调试模式下运行。 90% 的情况下,当我在断点处停止并尝试单步执行代码时,我会收到一个“出现未处理的异常”对话框,其中包含以下详细信息:
System.ObjectDisposedException 未处理 Message="安全句柄已关闭" 来源="mscorlib" 对象名称="" 堆栈跟踪: 在 Microsoft.Win32.Win32Native.SetEvent(SafeWaitHandle 句柄) 在 System.Threading.EventWaitHandle.Set() 在 System.IO.Ports.SerialStream.AsyncFSCallback(UInt32 错误代码,UInt32 numBytes,NativeOverlapped* pOverlapped) 在 System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 错误代码,UInt32 numBytes,NativeOverlapped* pOVERLAP) 内部异常:
令人沮丧的是,我不必重复与串行相关的代码!我只需要对端口进行一些操作。所以我可能会读取一个字符串,操作该字符串,将两个数字相加,无论如何,然后 BANG。
再一次,这在不调试或在没有任何断点的情况下调试时工作得很好。似乎在断点处停止会导致 CLR 在不同的线程上处理 SerialStream。
网上有很多关于更新 USB 设备导致此问题的讨论。但我使用的是 COM1 上的内置主板端口。
我认为我在 .NET 2.0 中没有遇到这个问题,所以我可能不得不回到那个问题......
在发布代码之前,我需要稍微简化一下应用程序 - 但以前有人在调试器中看到过这样的行为吗?
非常感谢!
【问题讨论】:
标签: winforms visual-studio-2008 .net-3.5 serial-port dispose