30/12/2007, 23:53
|
| Colaborador | | Fecha de Ingreso: septiembre-2007 Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 17 años, 4 meses Puntos: 87 | |
Re: progressbar mientras muestro información Si estas ocupando una aplicacion windows lo q puedes hacer es esto.
1.- Agrega un BackGroundWorker desde tu toolbox de componentes o hazlo manualmente en codigo.
2.- Configura los eventos que son necesarios y las propiedades requeridas
// Eventos que disparan la actualizacion haciendo la comunicacion inter hilos.
public delegate void ReportaAvance (int avance);
public event ReportaAvance mireportador;
private void Form1_Load(object sender, EventArgs e)
{
// Evento q Se ejecutara como proceso simultaneo, tu consulta
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
// El BW puede reportar su avance por lo q debemos asignarle un evento
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_Prog ressChanged);
this.mireportador += new ReportaAvance(Form1_mireportador);
backgroundWorker1.WorkerReportsProgress = true;
}
// Aqui actualizo el progressbar
void Form1_mireportador(int avance)
{
progressBar1.Value = avance;
}
// Cuando se reporte el avance del BW , este debe invocar el metodo del thread principal que hace la actualizacion del progressbar
void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
BeginInvoke(mireportador, e.ProgressPercentage);
}
// Aqui puedes poner tu query.
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
System.Threading.Thread.Sleep(i * 1000);
backgroundWorker1.ReportProgress(i);
}
}
// Este evento dispara la ejecucion de la tarea especificada en el metodo DoWork.
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
Espero que esto te pueda servir
Saludos
Peterpay |