Hola colegas, estoy tratando de usar el componente BackgroundWorker para crear varios hilos porque necesito ejecutar dos procesos a la vez, uno que muestre una progressBar y mandarle el avance y otro que ejecute el proceso que se tarda mucho, tengo esto pero me surgío la duda que posteo al final.
Aqui es donde se invocan los metodos
Código:
private void btnProcesar_Click(object sender, EventArgs e)
{
BackgroundWorker bw = new BackgroundWorker();
bw.WorkerReportsProgress = true;
bw.DoWork += new DoWorkEventHandler(EjecutaProcesos_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(BarraProgreso);
bw.RunWorkerAsync();
}
Este método disparara el método (válgale la redundancia) que ejecuta el SP de proceso
aquí es donde me falta enviarle el argumento (object) al método BarraProgreso
Código:
private void EjecutaProcesos_DoWork(object sender, DoWorkEventArgs e)
{
int porcentaje;
for (int i = 0; i < this.gvProcesos.DataRowCount; i++)
{
int vProceso = Convert.ToInt16(((DataTable)(((DataView)(((BaseView)(this.gvProcesos)).DataSource)).Table)).Rows[i]["idProceso"]);
switchProcesos(vProceso);
BarraProgreso("que le mando?", ((BackgroundWorker)(sender)).ReportProgress(porcentaje));
porcentaje++;
}
}
Código:
private void BarraProgreso(object sender, ProgressChangedEventArgs e)
{
this.prgBarProcesos.Value = e.ProgressPercentage;
}
y por ultimo aquí manejo lo procesos según su ID
Código:
private void switchProcesos(int vProceso)
switch (this.vProceso)
{
case 6:
ActualizaEstatus();
CargaProcesos();
break;
}
La duda es de cómo enviarle el argumento (object) al método BarraProgreso
Gracias.