O que eu tenho é uma placa ligada na porta serial. Pela serial eu mando um comando, a placa executa, e dispara um processo analógico que eu preciso esperar pelo menos 1 segundo até estabilizar. Aí eu faço uma leitura para ver se o sinal analógico está dentro do limite desejado. Eu preciso fazer isso 7 vezes, em cada vez eu mando um comando diferente, e espero uma leitura de valor diferente.
Inicialmente, eu fiz assim:
Eu criei um botão que dispara a o processo, e uma progressBar. A cada leitura bem sucedida, eu incremento a progressBar.
Mais ou menos assim:
- Código: Selecionar todos
progressBar.Value = 0;
// envio o comando pela serial
Thread.Sleep(1000);
// faço a leitura pela serial
// verifico se a resposta está ok, caso contrário gero erro via MessageBox, e retorno, se estiver OK continuo
progressBar.Value = 1;
// envio o comando pela serial
Thread.Sleep(1000);
// faço a leitura pela serial
// verifico se a resposta está ok, caso contrário gero erro via MessageBox, e retorno, se estiver OK continuo
progressBar.Value = 2;
// envio o comando pela serial
Thread.Sleep(1000);
// faço a leitura pela serial
// verifico se a resposta está ok, caso contrário gero erro via MessageBox, e retorno, se estiver OK continuo
e assim por diante, 7 vezes.
Problemas:
- O método Thread.Sleep congela a janela inteira, durante esse período ela fica sem resposta.
- Devido ao congelamento da janela, o progressBar cresce de forma totalmente dessincronizada com o que está sendo executado.
Eu tentei criar uma Thread, executar aquilo tudo na Thread, para que ela durma e não a janela. O problema é que a thread dorme antes de mandar a informação para a progressBar, e ela continua fora de sincronia.
Eu catei vários exemplos, e nenhum deles resolveu o problema.
Alguém aí tem uma dica do que eu posso fazer?
Estou usando Visual Studio 2010 (o 2013 ficou absurdamente lento no meu computador).
Obrigado!