IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Thread au démarrage


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut Thread au démarrage
    Bonjour
    Je voudrais savoir comment on fait pour lancer un Form qui, après avoir été visible trente secondes, change,...
    J'avais bien mis un thread.Sleep() dans le constructeur, et après le this.Visible(), mais tout ce que ça fait c'est que je ne vois mon Form qu'après que mon thread ai repris la main.

    Si quelqu'un pouvait me donner un tuyau, ce serait sympa


    PS: surtout dites si je n'ai pas été assez clair,...

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 85
    Par défaut


    Détails un peut plus car c'est pas trés clair est si possible copier le code en question

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    en effet je n'ai pas tres bien compris ce que tu voulais faire, mais en attendant, pourquoi ne pas utiliser un timer avec un interval de 30 secs qui gererai l'operation (le changement de form, ou autre), au lieu de d'endormir le thread principal de la form (ce qui fait que ta form au pire ne s'affiche pas, au mieux s'affiche mais est gelée).

    Bref laisse ton thread de form tranquille et créé un timer qui gerera ce que la form doit faire (en invoquant le thread principal si besoin est).

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut
    Bah, c'est vrai que je n'avais pas pensé à utilisé un timer, mais, de toute manière je ne comprends pas pourquoi je ne réussis pas à :
    1) je lance ma form
    2) Je passe la main à un autre thread qui "passe le temps"
    3) je reprends ma form

    Et ça je ne réussis pas, quelque soit la manière dont je m'y prends, mon form ne s'affiche qu'après le délai d'attente d'un thread, qui peut pourtant même provenir d'une autre classe !

    Et là j'y comprends plus rien !

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Peux tu poster ton code ?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 85
    Par défaut
    sa doit venir tu fais que c'ezt ta form principale est tu dois faire une erreur dans le code

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut
    Bha, ok, voilà mon code, en gros (je mets que ce qui me semble nécessaire, mais si quelqu'un veut le code entier, je peut toujours le zipper):

    //ça c'est dans le fichier Program.cs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    namespace WindowsApplication2
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Debut());
            }
        }
    }
    //Et ça c'est dans le fichier Form1.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    namespace WindowsApplication2
    {
        public partial class Form1 : Form
        {
            PictureBox[] tab_component; 
            Carte[] tab;
            int[] val;
            public Form1()
            {
                tab_component = new PictureBox[8]; 
                InitializeComponent();
                PictureBox temp;
                 temp = (PictureBox)groupBox1.Controls[i];
                 temp.Image= aBitmap;
                 tab_component[i]=(PictureBox)groupBox1.Controls[i];
              }            
                this.Visible = true;
            }
            public void montrer()
            {
                for (int i = 0; i < groupBox1.Controls.Count; i++) // affichage cache
                {
                    PictureBox temp;
                    temp = (PictureBox)groupBox1.Controls[i];
                    temp.Image = tab[i].Give_def();
                }
            }
    //Et voila le fichier Debut.cs ( fabriquer juste pour résoudre mon problème de thread,...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    namespace WindowsApplication2
    {
        public partial class Debut : Form
        {
            public Debut()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                Form1 f=new Form1();
                Thread.Sleep(50000);
                f.montrer();
                this.Visible = false;
            }
        }
    }

    PS: j'ai coupé dans le code, pour le rendre plus lisible, mais le compilo le lit très bien, donc ça ne devrait pas être une erreur de ponctuation ou un truc de ce genre,...

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Moi je dirais que la réponse est là :
    pourquoi ne pas utiliser un timer avec un interval de 30 secs qui gererai l'operation (le changement de form, ou autre), au lieu de d'endormir le thread principal de la form (ce qui fait que ta form au pire ne s'affiche pas, au mieux s'affiche mais est gelée).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/06/2015, 14h58
  2. [WD18] Le démarrage d'un thread ne se fait pas (aléatoire)
    Par elfasys dans le forum WinDev
    Réponses: 4
    Dernier message: 25/09/2013, 21h16
  3. Ecran de démarrage multi thread qui ne s'affiche pas sur un pc
    Par jacko842 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 16/01/2013, 12h14
  4. Invalid thread access au démarrage d'Eclipse
    Par raz2008 dans le forum Eclipse
    Réponses: 1
    Dernier message: 26/09/2009, 15h56
  5. Démarrage de threads
    Par Chop_chop dans le forum C++
    Réponses: 4
    Dernier message: 20/04/2007, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo