Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, boa tarde.
Tenho um form que faz a consulta no banco de dados e retorna em um datagrid porém essa consulta esta demorando muito e quero colocar um progress bar para o usuário não ficar clicando ou achando que travou o sistema, porém não estou achando nada referente a isso, achei progress bar que nós mesmos definimos o tempo e não é isso que quero.
Quero algum que quando clicar para rodar ele inicia automaticamente e quando terminar a consulta ele fecha.
Ola era isso mesmo que estava precisando.
Mas quero mais um ajudinha.
Estou tentando converter essa função para VB e não estou conseguindo. (ja usei programas de oconversão e não da certo.)
private void TarefaLonga(int p) {
for (int i = 0; i <= 10; i++) {
Thread.Sleep(p);
label2.BeginInvoke( new Action(() => {
label2.Text = "Tarefa: " + i.ToString() + " comcluída";
} ));
}
}
Conseguindo esse código, ta resolvido meu problema.
Tente assim:
Private Sub TarefaLonga(p As Integer)
For i As Integer = 0 To 10
Thread.Sleep(p)
label2.BeginInvoke(New Action(Function()
label2.Text = "Tarefa: " + i.ToString() + " concluída"
End Function))
Next
End Sub
Seu grande problema nesse código é o beginInvoke, porque provavelmente não vai dar para você manipular o objeto de dentro a não sei que você passe o caminho completo do form com o label, veja esse: http://stackoverflow.com/questions/6295552/trying-to-understand-control-begininvoke-code-over-at-msdn
Veja se resolve:
Private Sub TarefaLonga(p As Integer)
For i As Integer = 0 To 10
System.Threading.Thread.Sleep(p)
label2.BeginInvoke(New Action(Sub()
label2.Text = "Tarefa: " & i.ToString() & " concluída"
End Sub))
Next
End Sub
Resolvido, Valeu pessoal.
Veja se te ajuda: http://www.devmedia.com.br/backgrounworker-e-progressbar-exibindo-uma-barra-de-progresso-em-c/32127