Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#] Démarrer une Windows Form pendant une boucle

Sujet résolu
Anonyme
    6 mars 2019 à 20:13:59

    Bonjour, 

                while(true)
                {
                    Console.WriteLine("YOU DIDN'T SAY THE MAGIC WORD !");
                    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.05));
                    iValeur = iValeur + 1;
                    if (iValeur == 1)
                    {
                        Application.Run(new Program());
                    }

    Comment faire pour que quand je lance ma windows form, la console continue d’écrire la phrase ? Dans mon cas, la console m'écrit la phrase, elle lance la windows form mais c'est uniqment quand je ferme la windows form qu'elle continue d'écrire.

    -
    Edité par Anonyme 6 mars 2019 à 22:06:16

    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2019 à 17:30:26

      Bonjour,

      C'est en effet plutôt étrange, tu as essayé de la lancer dans un nouveau Thread ?

      • Partager sur Facebook
      • Partager sur Twitter
        7 mars 2019 à 18:43:23

        Salut,

        C'est normal, tu restes dans le même thread : https://docs.microsoft.com/fr-fr/dotnet/api/system.windows.forms.application.run?view=netframework-4.7.2

        Ton programme initial continue lorsque ta form est fermé.

        Il faudrait que crées un thread différent, mais je ne m'y connais pas plus.

        EDIT : Et tu devrais utiliser un booléen plutôt qu'un compteur si tu ne veux lancer la form qu'une seule fois.

        -
        Edité par Stormweaker 7 mars 2019 à 18:45:00

        • Partager sur Facebook
        • Partager sur Twitter
          7 mars 2019 à 20:44:15

          static int iVal = 0;
          
                  public static void Write()
                  {
                      while (true)
                      {
                          Console.WriteLine(iVal);
                          iVal++;
                          Thread.Sleep(1000);
                      }
                  }
          
                  public static void Display()
                  {
                      if (iVal == 8)
                      {
                          Console.WriteLine("Display begins");
                          Application.Run(new Form1());
                          Console.WriteLine("Display ends");
                      }
                  }
          
                  static void Main()
                  {
                      Thread t1 = new Thread(new ThreadStart(Write));
          
                      t1.Start();
          
                      while (true)
                      {
                          Display();
                          Thread.Sleep(100);
                      }
                  }

           On observe un output comme suit :

           0 -- 1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 --  Display begins -- 8 -- 9 -- 10 -- 11 -- Display ends (lorsque tu fermes le form)

          -
          Edité par LilyKianii 7 mars 2019 à 21:03:29

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            13 mars 2019 à 19:21:12

            Super merci !
            • Partager sur Facebook
            • Partager sur Twitter

            [C#] Démarrer une Windows Form pendant une boucle

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown