Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/02/2008, 22:15
jorgerulez
 
Fecha de Ingreso: septiembre-2006
Ubicación: Culiacán Sinaloa México
Mensajes: 5
Antigüedad: 17 años, 8 meses
Puntos: 1
Re: backgroundWorker1 C#

Cita:
Iniciado por Peterpay Ver Mensaje
Un pequeño ejemplo

protected int ComputeComplexCalculation(int x)
{
System.Threading.Thread.Sleep(5000);
return x * x;
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
int arg = (int)e.Argument;
backgroundWorker1.ReportProgress(25);
e.Result = ComputeComplexCalculation(arg);
backgroundWorker1.ReportProgress(50);

BackgroundWorker worker = sender as BackgroundWorker;
if (worker.CancellationPending)
{
e.Cancel = true;
}
}

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
backgroundWorker1.ReportProgress(100);
string msg = "";
if (e.Error != null)
{
msg = e.Error.Message;
}
else if (e.Cancelled)
{
msg = "Canceled";
}
else
{
msg = e.Result.ToString();
}
MessageBox.Show(msg);
BtnStartAsync.Enabled = true;
BtnCancelAsync.Enabled = false;
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.Text = e.ProgressPercentage.ToString();
progressBar1.Value = e.ProgressPercentage;
}

private void BtnStartAsync_Click(object sender, EventArgs e)
{
BtnStartAsync.Enabled = false;
BtnCancelAsync.Enabled = true;
backgroundWorker1.RunWorkerAsync(50);
//int res=ComputeComplexCalculation(50);
//MessageBox.Show(res.ToString());
}

Espero te sirva para resolver tu problematica.

Saludos
peter
Gracias peter, estube probando y me arroja una exepcion que dice:

"Este BackgroundWorker indica que no notifica el proceso. Modifique WorkerReporstProgress para que indique que si notifica el progreso."

Que estare haciendo mal?