ESPERAR UM TEMPO ENTRE UM LABEL.TEXT E OUTRO
Bom pessoal com disse anteriomente aqui no forum. Eu criei um ping para pingar o MS dentre varios servidores. Porém Preciso que espere um tempo entre um ping e outro. Tentei usar a Sleep(). Mas só que ele espera o tempo correto mais ele exibi os dois resultados juntos.
Exemplo:
Eu queria que ele printasse na minha label assim.
Servidor 1: 189ms
Espere 3 segundoes e então
Servidor 2: 175ms
Ele está printando assim
Espera os 3 segundos e então
Servidor 1: 189ms
Servidor 2: 175ms
CODE:
Exemplo:
Eu queria que ele printasse na minha label assim.
Servidor 1: 189ms
Espere 3 segundoes e então
Servidor 2: 175ms
Ele está printando assim
Espera os 3 segundos e então
Servidor 1: 189ms
Servidor 2: 175ms
CODE:
If rping0.Status <> IPStatus.Success Then
Label6.Text = snome(0) & [Ô]: [Ô] & [Ô]Sem Resposta[Ô]
Else
Label6.Text = snome(0) & [Ô]: [Ô] & rping0.RoundtripTime.ToString & [Ô] ms[Ô]
End If
Thread.Sleep(3000)
Dim rping1 As PingReply = pingar.Send(swip(1))
If rping0.Status <> IPStatus.Success Then
Label7.Text = snome(1) & [Ô]: [Ô] & [Ô]Sem Resposta[Ô]
Else
Label7.Text = snome(1) & [Ô]: [Ô] & rping1.RoundtripTime.ToString & [Ô] ms[Ô]
End If
Você pode utilizar um controle Timer para isso:
http://www.macoratti.net/vbn_time.htm
http://www.macoratti.net/09/06/vb_emp1.htm
vlw
http://www.macoratti.net/vbn_time.htm
http://www.macoratti.net/09/06/vb_emp1.htm
vlw
Bom amigo... segui o exemplo do site do macoratti. Para compreender o sistema timer. Pois sou iniciante no assunto ainda. Segui o exemplo que ele citou na pagina.
Na hora de criar não recebo erro algum.
Porém na de testar a aplicação ele me retorna um erro. Nessa linha.
Label2.Text = e.SignalTime.ToString
Na hora de criar não recebo erro algum.
Porém na de testar a aplicação ele me retorna um erro. Nessa linha.
Label2.Text = e.SignalTime.ToString
System.InvalidOperationException was unhandled by user code
Message=Cross-thread operation not valid: Control [ô]Label2[ô] accessed from a thread other than the thread it was created on.
Source=System.Windows.Forms
StackTrace:
at System.Windows.Forms.Control.get_Handle()
at System.Windows.Forms.Control.set_WindowText(String value)
at System.Windows.Forms.Control.set_Text(String value)
at System.Windows.Forms.Label.set_Text(String value)
at WindowsApplication1.Form1.DispararTimer(Object sender, ElapsedEventArgs e) in C:\Users\Palmieri\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb:line 5
at System.Timers.Timer.MyTimerCallback(Object state)
InnerException:
Você tem que colocar o controle Timer no form em que quer mostrar os dados. Esse erro é porque você está colocando o Timer em uma classe que gera conflito de Thread com os controles do form.
Para capturar os dados das threads, você poderia usar o backgroundworker para sincronizar esses dados.
http://www.macoratti.net/vbn5_ept.htm
ou trabalhar com delegates diretamente:
http://www.macoratti.net/10/01/threading.htm
http://www.jorgepaulino.com/2008/03/trabalhando-com-threads-multi-tarefas.html
ou então
Mande essa parte de codigo para podermos analisar melhor.
vlw
Para capturar os dados das threads, você poderia usar o backgroundworker para sincronizar esses dados.
http://www.macoratti.net/vbn5_ept.htm
ou trabalhar com delegates diretamente:
http://www.macoratti.net/10/01/threading.htm
http://www.jorgepaulino.com/2008/03/trabalhando-com-threads-multi-tarefas.html
ou então
Mande essa parte de codigo para podermos analisar melhor.
vlw
Cria uma Sub:
E vc chama a procedure assim:
Public Sub Esperar(ByVal QuantosSegundos as uint16)
Dim Final As Date = TimeOfDay.AddSeconds(QuantosSegundos)
While Not TimeOfDay.Second >= Final.Second
Application.DoEvents
End While
End Sub
E vc chama a procedure assim:
Esperar(3)
é isso ai que queria PEGUDO. Muito obrigado amigo.
Tópico encerrado , respostas não são mais permitidas