• Domingo 22 de Diciembre de 2024, 08:37

Autor Tema:  Problemas Con El Backgroundworker  (Leído 1993 veces)

isa_isa

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Problemas Con El Backgroundworker
« en: Jueves 24 de Mayo de 2007, 17:35 »
0
Hola.
He estado trabajando últimamente con este componente y me ha surgido un problemilla...
Si ejecuto el algoritmo que usa el BW una vez no pasa nada, todo funciona perfectamente pero luego, si lo vuelvo a ejecutar otra vez, a veces me da una excepción y otras veces funciona (?¿¿?¿??¿)
La excepción que me da es la siguiente:
"En esta operación ya se ha llamado a OperationCompleted y no se permiten más llamadas"

************* Texto de la excepción **************
System.InvalidOperationException: En esta operación ya se ha llamado a OperationCompleted y no se permiten más llamadas.
   en System.ComponentModel.BackgroundWorker.ReportProgress(Int32 percentProgress, Object userState)
   en System.ComponentModel.BackgroundWorker.ReportProgress(Int32 percentProgress)
   en Metria.Principal.segundoPlanobackgroundWorker1_RunWorkerCompleted(Object sender, RunWorkerCompletedEventArgs e) en C:\Documents and Settings\Isabel\Escritorio\Projects\Metria\Metria\PrincipalForm.cs:línea 2619
   en System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(RunWorkerCompletedEventArgs e)
   en System.ComponentModel.BackgroundWorker.AsyncOperationCompleted(Object arg)
.......................................

¿Por qué a veces funciona y otras veces no?
¿Cómo lo puedo solucionar?
¿Qué es que sólo lo puedo ejecutar una vez?



Muchísimas gracias.
Saluducos
Isa

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problemas Con El Backgroundworker
« Respuesta #1 en: Sábado 26 de Mayo de 2007, 16:07 »
0
ES mas facil ayudarte si adjuntas tu código, ese componente no lo he usado pero tengo entendido que la idea es que funciona como hilo fácil...
adjuntalo y lo miramos.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

isa_isa

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Problemas Con El Backgroundworker
« Respuesta #2 en: Miércoles 30 de Mayo de 2007, 12:11 »
0
A ver, aqui os pongo codiguete :P

he probado de muchas formas, he creado un componente para cada función
 
Código: Text
  1.  
  2. backgroundWorker.RunWorkerAsync(algoritmo.CORRELACION);
  3.  
  4.  
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í:

Código: Text
  1.  
  2. BackgroundWorker w = new BackgroundWorker();
  3.             w.WorkerReportsProgress = true;
  4.             w.WorkerSupportsCancellation = true;
  5.             w.DoWork += new System.ComponentModel.DoWorkEventHandler(this.segundoPlanobackgroundWorker1_DoWork);
  6.             w.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.segundoPlanobackgroundWorker1_RunWorkerCompleted);
  7.             w.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.segundoPlanobackgroundWorker1_ProgressChanged);
  8.  
  9.             w.RunWorkerAsync(algoritmo.RANGO);
  10.  
  11.  
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! :P

a ver si con esto os sirve de más ayuda..
muchas gracias!
isa