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 :

Fermer une form + Thread


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Fermer une form + Thread
    Salut,
    j'ai ce code la:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    using System.Timers;
     
    namespace MultiThing
    {
        public partial class FSplash : Form
        {
            public Thread chargementFonction;
            private delegate void Afficher(string str, int charg);
     
            public FSplash()
            {
                InitializeComponent();
                chargementFonction = new Thread(chargement);
                chargementFonction.Start();
            }
     
            public void chargement()
            {
                if (!this.IsHandleCreated) { this.CreateHandle(); }
     
                this.Invoke(new Afficher(Affichertext), "Chargement des librairies...", 0);
                Thread.Sleep(2000);
                this.Invoke(new Afficher(Affichertext), "Chargement des fichiers...", 20);
                Thread.Sleep(2000);
                this.Invoke(new Afficher(Affichertext), "Chargement des plugins...", 40);
                Thread.Sleep(2000);
                this.Invoke(new Afficher(Affichertext), "Chargement des préférences utilisateurs...", 60);
                Thread.Sleep(2000);
                this.Invoke(new Afficher(Affichertext), "Mise en cache...", 80);
                Thread.Sleep(2000);
                this.Invoke(new Afficher(Affichertext), "C'est parti !", 100);
                Thread.Sleep(2000);
                chargementFonction.Abort();
            }
     
            public void Affichertext(string str, int charg)
            {
     
                txtLoad.Text = str;
                txtLoad.Refresh();
                barLoad.Value = charg;
            }
        }
    }
    Et j'aimerai fermer ma form sauf que si je mets this.close(); apres le abort ca ne fait rien, pareil avant et si je le mets après chargementfonction.Start(); ca ferme avant d'avoir chargé et provoque des erreurs :s
    j'ai meme essayé ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                while (!Thread.CurrentThread.IsAlive)
                {
                    this.Close();
                }
    sauf que sa ne fait rien (après le chargementfonction.Start();)
    Comment faire ?
    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Points : 713
    Points
    713
    Par défaut
    C'est normal car chargement est utilisé par ton thread.
    Si tu tues le thread dans chargement il quittera automatiquement la méthode, et le reste du code qui suit dans cette même méthode ne sera pas exécuter.

    Si tu veux quitter tu peux utiliser un bouton qui contiendra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    chargementFonction.Abort();
    this.Close();
    Ou si tu préfère quitter par la X
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protected override void OnClosing(CancelEventArgs e)                                 
    {
                chargementFonction.Abort();
                base.OnClosing(e);
    }

Discussions similaires

  1. Fermer une form au bout de 5 secondes
    Par gastoncs dans le forum VB.NET
    Réponses: 11
    Dernier message: 02/02/2007, 10h57
  2. [C# 2.0] Fermer une Form dans un événement
    Par Mast3rMind dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/11/2006, 11h05
  3. Fermer une forme automatiquement
    Par MiJack dans le forum Delphi
    Réponses: 4
    Dernier message: 02/08/2006, 09h19
  4. [VB6] Comment fermer une form en cliquant sur un boutton ??
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/04/2006, 19h05
  5. [Form close] Impossible de fermer une form
    Par valoji dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2006, 15h12

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