while visual repetitivas for estructuras ejemplos ciclo vb.net winforms user-interface

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.