Pergunta

Vista SP1 Visual Studio 2008 SP1 NET 3.5 SP1 C #

Eu tenho um winforms app que eu estou jogando com o que usa um objeto SerialPort como uma variável privada. Quando o aplicativo é compilado e executado, ele funciona muito bem. Ele também funciona em execução no modo de depuração wihtout qualquer ponto de interrupção. 90% do tempo em que eu parar em um ponto de interrupção e tentar percorrer o código eu recebo um 'não manipulado exceção ocorreu' de diálogo com esses detalhes:

System.ObjectDisposedException foi não processada Message = "alça de segurança foi fechada" Fonte = "mscorlib" ObjectName = "" StackTrace: em Microsoft.Win32.Win32Native.SetEvent (SafeWaitHandle punho) em System.Threading.EventWaitHandle.Set () em System.IO.Ports.SerialStream.AsyncFSCallback (UInt32 errorCode, UInt32 numBytes, NativeOverlapped * pOverlapped) em System.Threading._IOCompletionCallback.PerformIOCompletionCallback (UInt32 errorCode, UInt32 numBytes, NativeOverlapped * pOVERLAP) InnerException:

O frustrante é que eu não tenho que estar pisando sobre o código de série relacionada! Eu só tenho que ter feito algo com a porta. Para que eu possa ler uma string, manipular a corda, somar dois números, o que quer, e depois BANG.

Mais uma vez, isso funciona muito bem quando não depuração, ou quando a depuração wihtout qualquer ponto de interrupção. Parece haver algo sobre parar em um ponto de interrupção que faz com que o CLR descartar o SerialStream em um segmento diferente.

Há um monte de conversas on-line sobre problemas com renoving dispositivos USB causando isso. Mas eu estou usando o build-in port placa-mãe em COM1.

Eu não acho que eu tive esse problema no .NET 2.0 para que eu possa ter de voltar a esse ...

Eu preciso simplificar a aplicação um pouco antes que eu possa postar código - mas ninguém tem visto o comportamento como este no depurador antes

Muito obrigado!

Foi útil?

Solução

Eu tive o mesmo problema apenas esta manhã. Surpreendentemente, ele simplesmente foi embora quando eu DEFICIENTES as seguintes opções no VS2008 Ferramentas> Opções> Debugging-> Geral:

  • "Ativar o assistente de exceção"
  • "Ativar .NET Framework stepping fonte"
  • "Passo sobre propriedades e operadores"
  • "Ativar avaliação da propriedade e outras chamadas de função implícita"

Eu não tenho idéia por que, mas ele trabalhou para mim.

Outras dicas

Talvez a sua porta está sendo fechada pelo sistema operacional como ele não recebe uma resposta do seu aplicativo (que está parado em um ponto de interrupção).

Bem, eu não estou tão certo de que este é uma resposta, mas havia definitivamente algo sobre esse projeto. Foi originalmente escrita em 2.0 e convertido em 3,5 por VS2008. Eu criei um novo projeto em C # -Express 2008 adicionando as classes originais um por um e ele funciona como um encanto agora! Não faço ideia o que é diferente.

Eu tenho isso também. Isto deve ser algum tipo de erro com o depurador. O conselho acima funcionou: Desativar a opção "Ativar avaliação da propriedade e outras chamadas de função implícitas."

Eu tenho uma classe com propriedades que fazem de série I / O. Eu pensei que talvez o depurador foi amavelmente tentando mostrar o valor da propriedade quando eu pairava o mouse sobre ele, fazendo assim a IO do segmento depurador. Mas isso não parece ser o caso. Estou realmente não tem certeza qual é a causa.

Eu tive o mesmo problema e fez o seguinte:

serialPortLock = Monitor.TryEnter(serialPort, 3000);
Thread.Sleep(5);
serialPort.Write(msg, 0, msg.Length);

eo mesmo para a minha Read (). Parece que é uma boa solução para mim!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top