none
Aiuuudaa !! BackgroundWorker RRS feed

  • Pregunta

  • Me podrian apoyar con ejemplos usando 

     BackgroundWorker 

    en procesos es que no logro encontrar un ejemplo claro que me pueda ayudar

    en mi desarrollo.

    Mg 

    jueves, 23 de noviembre de 2017 19:34

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.

    jueves, 23 de noviembre de 2017 20:10
  • 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.

    viernes, 24 de noviembre de 2017 19:01

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.

    jueves, 23 de noviembre de 2017 19:43
  • Estaba pensando usarlo para un subproceso ya que quiero saber la cantidad de registros que se esta descargando de  otra base de datos 

    y para saber cuando termino su proceso . 

    jueves, 23 de noviembre de 2017 19:48
  • 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.

    jueves, 23 de noviembre de 2017 20:10
  • 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.

    viernes, 24 de noviembre de 2017 19:01
  • Hola 

    Podrías evaluar usar async/await

    Await Operator

    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
    viernes, 24 de noviembre de 2017 21:05