Windows/Explorer cambiará un proceso al estado "No responde" cuando va demasiado tiempo sin procesar ningún mensaje. En VB6, esto sucederá cuando se ejecuta una sección larga de código sin llamar al DoEvents
.
Desafortunadamente, VB6 no hace varios hilos fácilmente, por lo que su mejor opción es llamar periódicamente al DoEvents
durante la operación. Idealmente, esto sería justo después de actualizar la posición de la barra de progreso.
Al hacer esto, deberá tener cuidado para proteger contra la reentrada. Esto es bastante fácil deshabilitando los controles cuando se inicia la operación larga y volviéndolos a habilitar cuando haya terminado. Si desea dejar que se cancelen, deberá usar un valor booleano que haya configurado en el evento de clic de botón cancelar y marque después de llamando al DoEvents
.
Bienvenido a StackOverflow. Es posible que desee leer las preguntas frecuentes y las páginas relacionadas sobre [etiqueta] (http://stackoverflow.com/faq#etiquette), y trate de no gritar o usar texto en negrita innecesariamente. – Deanna
Puede que le interesen las preguntas relacionadas [cancelar un proceso de larga ejecución en Vb6] (http://stackoverflow.com/questions/155517/cancelling-a-long-running-process-in-vb6-0-without- doevents) y [usando hilos en VB6] (http://stackoverflow.com/questions/383162/to-use-thread-in-programming-in-vb6) y [haciendo un evento kill para una aplicación Vb6] (http: //stackoverflow.com/questions/727386/making-ac-sharp-kill-event-for-a-vb6-app). Los títulos pueden no parecer relacionados, pero las respuestas te serán útiles. Explican algunas formas diferentes en que puede procesar el fondo en VB6 – MarkJ