visual - VB.NET-Forma de bucle y finalización de formulario de interrupción
for next ejemplos (2)
Tengo un formulario que pasa por un ciclo sin fin y procesa datos. Cuando hago clic en un botón que "cierra" el formulario, el formulario continúa procesándose aunque esté cerrado. Quiero que el formulario termine por completo y salga de su instrucción de ciclo, y luego abra un formulario nuevo.
Aquí está el código que estoy usando para cerrar el formulario
frmMain.Close()
frmMain.Dispose()
Nota: No estoy usando hilos, es solo una simple aplicación VB.NET . No estoy cerrando el formulario de inicio principal.
La forma "correcta" de hacer esto es con hilos de trabajo en segundo plano realmente. Pero esto también funcionará sin la necesidad de hilos de trabajo en segundo plano.
Declara una variable en la clase de formulario.
Private keepLoopAlive As Boolean
Luego escriba su ciclo de procesamiento para que sea algo así como:
keepLoopAlive = True
Do While keepLoopAlive
(your code that loops here)
DoEvents
Loop
Luego en tu evento Cerrar haz:
keepLoopAlive = False
Me.Close()
Esto causará que el ciclo termine en la primera oportunidad que se presente, y tu formulario debería cerrarse.
Tenga en cuenta que he escrito este código desde la memoria y no en un IDE, por lo que puede haber errores tipográficos.
No soy un desarrollador de .NET así que esto puede no ser válido, pero si estuviera ejecutando un ciclo infinito, estaría comprobando cada vez que comencé que el ciclo seguía siendo válido con algún tipo de valor booleano, y si no funcionaba, soltaba fuera de la lupa.
Cuando cierre el formulario, establezca el valor booleano como falso y se abandonará, y puede tener un bucle externo que espera y reinicia el bucle, o puede reiniciar toda la función en otro momento.