none
barra de progreso cuya duración dependa de la duración de un proceso que se está ejecutando RRS feed

  • Pregunta

  • Hola amigos,

    Estoy trabajando en un proyecto Windows Forms con vb.net y tengo un proceso que puede durar mucho o poco tiempo, es un recorrido por todo un kardex de todos los productos... en fín. Mi necesidad consiste en ejecutar el proceso colocandole un barra de progreso en la barra de estado de la aplicación que muestre el progreso del proceso y que se muestre hasta que termine pero en un segundo plano. Al final del proceso se muestra un mensaje msgbox.  Sin embargo, no sé como hacerlo, y no entiendo lo de ejecutar un proceso en un segundo plano. 

    Les agradecería me ayudaran.

    SOLPH.


    Saludos, Solph.

    sábado, 6 de diciembre de 2014 13:13

Todas las respuestas

  • La expresión "en segundo plano" implica que el trabajo se realiza en un "hilo de trabajo".  Windows Forms provee el componente llamado BackgroundWorker que simplifica la creación del hilo de trabajo (si desconoce el término le recomiendo leer acerca de programación multihilo).  El componente BackgroundWorker tiene un evento DoWork() que es donde se coloca el código del trabajo a realizar en segundo plano, y desde allí se hacen llamados al método ReportProgress().  Esos llamados generan la ejecución de otro evento llamado ProgressChanged, que es usado típicamente para actualizar una barra de progreso.

    El código de DoWork() es el encargado de generar los eventos ProgressChanged y de proveer información veraz para el reporte del progreso.  Con esto me refiero a que el código en DoWork() es quien debe de calcular en qué punto del trabajo se encuentra (el porcentaje completado).  No hay nada mágico en .net que le adivine dicho valor.

    El enlace que le dejé de la documentación en MSDN Online contiene un ejemplo.


    Jose R. MCP
    Code Samples

    martes, 16 de diciembre de 2014 5:12
    Moderador