60 votes

VB.NET - Interrompre la forme de la boucle et à la fin du formulaire

J'ai un formulaire qui passe à travers une boucle sans fin et les processus de données. Lorsque je clique sur un bouton qui "ferme" la forme, la forme continue de s'exécuter même si il est fermé. Je veux que le formulaire complètement fin et de sortie de la boucle à déclaration, puis ouvrez un nouveau formulaire.

Ici c'est le code que j'utilise pour fermer le formulaire

frmMain.Close()
frmMain.Dispose()

Note: je ne suis pas à l'aide de fils, c'est juste une simple VB.NET application. Je ne suis pas la fermeture de la principale formulaire de démarrage.

84voto

Panafe Points 227

La "bonne" façon de le faire est avec un fond de threads de travail vraiment. Mais cela permettra également de travailler sans la nécessité de fond de threads de travail.

Déclarer une variable dans la classe de formulaire.

Private keepLoopAlive As Boolean

Ensuite, écrivez votre boucle de traitement pour être quelque chose comme:

keepLoopAlive = True

Do While keepLoopAlive 

    (your code that loops here)

    DoEvents

Loop

Ensuite, sur votre événement:

keepLoopAlive = False
Me.Close()

Ce sera la cause de la boucle à la fin de la première chance qu'il obtient, et votre formulaire doit fermer.

Veuillez noter que j'ai écrit ce code à partir de la mémoire et non pas dans un IDE, donc il peut y avoir des fautes de frappe.

12voto

Craig Points 81

Je ne suis pas un .NET développeur si cela peut ne pas être valide, mais si je devais effectuer une boucle infinie, je serais en vérifiant à chaque fois que j'ai commencé que la boucle était encore valable avec une sorte de valeur booléenne, et en cas d'échec, d'abandon de la boucle.

Lorsque vous fermez le formulaire, définissez la valeur booléenne false et il tombera, et vous pouvez avoir soit une boucle externe qui attend et qui redémarre en boucle, ou vous pouvez redémarrer l'ensemble de la fonction à un autre moment.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X