Fermeture Windows Forms

Fermé
Hurobaki Messages postés 53 Date d'inscription dimanche 23 mars 2014 Statut Membre Dernière intervention 10 mars 2017 - 16 nov. 2016 à 13:43
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 16 nov. 2016 à 16:20
Bonjour à tous,

Je suis en train de coder une application et pour cela j'ai besoin d'utiliser des Form dans mon code. Jusque là je me suis dis que tout irait bien ...
Sauf que je me suis aperçu lors de la fermeture de ma première Form pour quitter l'application, le processus de mon application tourne toujours en arrière plan et que cela me pose un problème pour redémarrer l'application une nouvelle fois.

J'ai cherché sur internet pour voir comment résoudre ce problème, sans succès. J'ai essayé de nombreuse méthodes mais aucunes ne marchent.

Je vous montre mon code :

static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

        }
    }

if(flag)
            {
                //Application.Run(new Form2());

                Form2 f2 = new Form2();
                f2.ShowDialog();
                this.Hide();
            }

private void Form_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }


Alors dans ma Form1, je souhaite afficher ma Form2 si l'utilisateur a répondu à certaines conditions. Le problème c'est que je n'arrive pas à fermer ma première Form, et que lorsque je ferme l'application, celle-ci reste dans mes processus.

Je pense donc que ce problème est dû à ma Thread initial de la Form1 qui tourne encore derrière. J'ai bien régardé des solutions pour stopper des Threads, je pensais que la méthode Application.Exit() suffirait pour régler ce problème.

J'ai aussi utilisé un Debug.WriteLine() sur l'event closing() mais je n'ai pas l'impression que l'évent s'active ...

Voilà, j'aimerai apprendre la bonne méthode pour générer des Form et en stopper proprement.

Créer des Threads pour créer mes Form serait une bonne solution ?

Merci d'avance !
A voir également:

1 réponse

Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 928
16 nov. 2016 à 16:19
Bonjour,

Le code que tu montres ne correspond pas à ce que tu décrits.
Tu affiches form2 avec ShowDialog, ce qui veut dire que form1 est bloquée le temps que form2 est active.
Le cours de l'exécution reprend dès que l'utilisateur ferme form2, et la c'est
This.Hide();
ce qui cache form1 mais ne la ferme pas. Or pourque la fin du programme dans la class Program arrive, il faut que form1 soit fermée.

Une fois cachée, pas facile la fermer...

Si tu veux que le programme stoppe à la fermeture de form2, remplace
this.Hide() par Application.Exit()

0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 928
16 nov. 2016 à 16:20
Ha oui, avec ton code actuel, tu ne passes en effet pas dans FormClosing, parce que tu ne ferme pas la form
0