A ver, aqui os pongo codiguete
he probado de muchas formas, he creado un componente para cada función
backgroundWorker.RunWorkerAsync(algoritmo.CORRELACION);
donde backgroundworker es distinto para cada algoritmo
con esta opción también probé a cambiar las funciones a las que llama para que fueran exclusivas para cada backgroundworker pero casca igual..
luego también los he creado en el momento en q se llama a la función así:
BackgroundWorker w = new BackgroundWorker();
w.WorkerReportsProgress = true;
w.WorkerSupportsCancellation = true;
w.DoWork += new System.ComponentModel.DoWorkEventHandler(this.segundoPlanobackgroundWorker1_DoWork);
w.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.segundoPlanobackgroundWorker1_RunWorkerCompleted);
w.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.segundoPlanobackgroundWorker1_ProgressChanged);
w.RunWorkerAsync(algoritmo.RANGO);
y también casca... he probado a poner una función en cada backgroundworker runWorkerCompleted distinta, por si era eso y también casca...
me voy a volver loca!
a ver si con esto os sirve de más ayuda..
muchas gracias!
isa