Vista SP1
Visual Studio 2008 SP1
.NET 3.5 SP1
C #
У меня есть приложение winforms, с которым я играю и которое использует объект SerialPort в качестве закрытой переменной. Когда приложение компилируется и выполняется, оно прекрасно работает. Он также работает в режиме отладки без каких-либо точек останова. 90% времени, когда я останавливаюсь на точке останова и пытаюсь пройти по коду, я получаю диалоговое окно «Произошло необработанное исключение» со следующими деталями:
System.ObjectDisposedException не обработан
Сообщение = "Безопасный дескриптор закрыт"
Источник = "mscorlib"
ObjectName = ""
Трассировки стека:
в Microsoft.Win32.Win32Native.SetEvent (дескриптор SafeWaitHandle)
в System.Threading.EventWaitHandle.Set ()
в System.IO.Ports.SerialStream.AsyncFSCallback (код ошибки UInt32, numBytes UInt32, NativeOverlapped * pOverlapped)
в System.Threading._IOCompletionCallback.PerformIOCompletionCallback (код ошибки UInt32, numBytes UInt32, NativeOverlapped * pOVERLAP)
InnerException:
Разочарование в том, что мне не нужно перешагивать через последовательный код! Я просто должен был сделать что-то с портом. Таким образом, я мог бы прочитать строку, манипулировать строкой, добавить два числа вместе, что угодно, а затем BANG.
Опять же, это прекрасно работает, когда НЕ выполняется отладка или отладка без каких-либо точек останова. Похоже, что при остановке в точке останова что-то заставляет CLR утилизировать SerialStream в другом потоке.
В Интернете много болтовни о проблемах, связанных с обновлением USB-устройств, вызывающих это. Но я использую порт встроенной материнской платы на COM1.
Я не думаю, что у меня была эта проблема в .NET 2.0, поэтому мне, возможно, придется вернуться к этому ...
Мне нужно немного упростить приложение, прежде чем я смогу публиковать код - но кто-нибудь видел такое поведение в отладчике раньше?
Большое спасибо!