Principales respuestas
Aiuuudaa !! BackgroundWorker

Pregunta
-
Respuestas
-
El punto aquí es saber si la tarea te va a proporcionar el dato acerca del progreso de la misma. Ese suele ser el gran problema y la fuente de infinitas preguntas en estos foros: "lo pongo en un thread pero no me informa nada hasta que termina".
Si puedes conseguir esa información acerca del avance de la tarea, entonces el componente cumple su cometido. Puedes llamar a ReportProgress desde el DoWork, antes de ingresar al loop, para inicializar la información en la gui, y luego llamar a ReportProgress al final de cada ciclo del loop, para actualizar los datos en la gui. La función que actualiza la gui es la que asignaste al evento ProgressChanged.
Si no puedes tener información del progreso de la tarea, basta con meter la tarea en un thread secundario común y corriente, y él te puede avisar cuando acaba.
- Propuesto como respuesta Pablo Rubio viernes, 24 de noviembre de 2017 16:12
- Marcado como respuesta Enrique M. MontejoModerator lunes, 27 de noviembre de 2017 12:13
-
Hola Anis_1
Con base a tu consulta, te invito a que vayas al siguiente enlace(en inglés), en donde encontrarás un tutorial de como utilizar Background Worker, tanto ejemplos de códigos que te pueden ser de mucha utilidad.
Quedamos al pendiente de cualquier actualización de tu parte.
Saludos Cordiales
Gracias por usar los foros de MSDN.
Pablo Rubio
_____
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.- Propuesto como respuesta Jorge TurradoMVP viernes, 24 de noviembre de 2017 21:07
- Marcado como respuesta Enrique M. MontejoModerator lunes, 27 de noviembre de 2017 12:13
Todas las respuestas
-
¿para qué piensas que lo necesitas? eso es importante.
El componente bw sirve a un único propósito: comunicar el worker thread con el thread de la gui. La ingeniería del componente instrumenta (programa), esta comunicación. Vos simplemente tenés que asignar un método al evento progress-change (o algo así) y usar el método ReportProgress del componente desde el dowork (que ejecuta en el worker thread).
Llamar a ReportProgress es el único motivo para usar el componente. No hagas mucho caso al nombre, está pensado para pasar un valor de progreso a una progress bar, pero su segundo argumento te permite pasar cualquier cosa, e incluso puedes redefinir el significado del primero.
-
-
El punto aquí es saber si la tarea te va a proporcionar el dato acerca del progreso de la misma. Ese suele ser el gran problema y la fuente de infinitas preguntas en estos foros: "lo pongo en un thread pero no me informa nada hasta que termina".
Si puedes conseguir esa información acerca del avance de la tarea, entonces el componente cumple su cometido. Puedes llamar a ReportProgress desde el DoWork, antes de ingresar al loop, para inicializar la información en la gui, y luego llamar a ReportProgress al final de cada ciclo del loop, para actualizar los datos en la gui. La función que actualiza la gui es la que asignaste al evento ProgressChanged.
Si no puedes tener información del progreso de la tarea, basta con meter la tarea en un thread secundario común y corriente, y él te puede avisar cuando acaba.
- Propuesto como respuesta Pablo Rubio viernes, 24 de noviembre de 2017 16:12
- Marcado como respuesta Enrique M. MontejoModerator lunes, 27 de noviembre de 2017 12:13
-
Hola Anis_1
Con base a tu consulta, te invito a que vayas al siguiente enlace(en inglés), en donde encontrarás un tutorial de como utilizar Background Worker, tanto ejemplos de códigos que te pueden ser de mucha utilidad.
Quedamos al pendiente de cualquier actualización de tu parte.
Saludos Cordiales
Gracias por usar los foros de MSDN.
Pablo Rubio
_____
Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.
Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.
Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.- Propuesto como respuesta Jorge TurradoMVP viernes, 24 de noviembre de 2017 21:07
- Marcado como respuesta Enrique M. MontejoModerator lunes, 27 de noviembre de 2017 12:13
-
Hola
Podrías evaluar usar async/await
Dim listMov = await Task.Run((Function()) SdMovimientoCorporal.ListaMovimientoCorporal())
Tu método tiene que ser asíncrono, es código de ejemplo adáptalo a tus necesidades.
Saludos!!!
Pedro Ávila
"El hombre sabio querrá estar siempre con quien sea mejor que él."
Lima - Perú- Propuesto como respuesta Jorge TurradoMVP viernes, 24 de noviembre de 2017 21:07