Hola, aqui te dejo un breve ejemplo para hacer lo que necesitas, esta dividido en 2 partes.
- Clase que realiza el proceso y "dispara" un evento para reportar un cambio
Código C#:
Ver originalpublic class Clase{
//Resto de la clase
public event ProgressChangedEventHandler ReportProgress;
protected void OnReportProgress(ProgressChangedEventArgs e){
if(ReportProgress != null){
ReportProgress(this, e);
}
}
public void Procesar(){
for(int i = 0; i < 100; i++){
OnReportProgress(new ProgressChangedEventArgs(i, null));
Thread.Sleep(10);//Simula un retardo por el procesamiento de la información, se puede eliminar en la implementación definitiva
}
}
}
- Implementación en el formulario del metodo que procesa el evento
Código C#:
Ver original//Dentro del Form del ProgressBar
public class FormProgressBar : Form{
public FormProgressBar(){
//Resto del constructor
Clase cls = new Clase();
cls.ReportProgress += new ProgressChangedEventHandler(cls_ProgressChanged);//Se agrega el manejador del evento
cls.Procesar();//Se inicia el proceso
}
//Resto de la clase
private void cls_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.progressBar.Value = e.ProgressPercentage;//Este valor va de 0 a 100
}
}
Tal vez tengas que agregar algún using pero en principio no deberías de tener problemas, otra cosa es que yo instancio la clase en el constructor, pero tu puedes hacerlo donde mejor te convenga, espero que esto te sea util.
Saludos