none
Problemas con Application.DoEvents() en Visual Studio 2013 RRS feed

  • Pregunta

  • Tengo un formulario que utilizo como clase y que sirve para mostrar un ProgressBar de avance para un proceso que permita controlar el progreso del mismo.

    Básicamente la rutina de utilización de esta clase sería como sigue:

    using (FormGauge oForm = new FormGauge(100000))
    {
        oForm.ShowFormGauge();
    
        for (int i = 0; i < oForm.oProgressBar.Maximum; i++)
        {
            oForm.Avance(i, "Procesando información...");
            if (oForm.CancelarProceso)
            {
                break;
            }
        }
    
        oForm.Close();
    }

    El valor inicial 100000 corresponde a la cantidad máxima de información a procesar, la cuál actualiza la propiedad "maximum" del ProgressBar.

    Esta clase muestra un formulario con una barra de progreso que se va actualizando con el método "oForm.Avance()".

    Este formulario contiene un botón de comando "Cancelar" que, al presionarlo, actualiza la propiedad de la clase "CancelarProceso" que inicialmente es "false". Es decir deja esta propiedad en "true". Posteriormente la rutina pregunta por el estado de la propiedad "CancelarProceso", y si esta se encuentra en "true" quiebra el ciclo "for".

    Para que esto funcione, dentro del método "oForm.Avance()", la última línea de código de este método es "Application.DoEvents()", que permitiría recibir el mensaje cuando se presionó el botón "Cancelar".

    Esto me funciona a la perfección en Visual Studio 2010, pero no así en Visual Studio 2013. ¿Qué puede estar pasando con este último?

    Atento a las posibles repuestas, saludos.

    martes, 17 de mayo de 2016 17:06