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 :

délai entre fermeture application et fin des processus


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 57
    Points : 37
    Points
    37
    Par défaut délai entre fermeture application et fin des processus
    Voila, quand je ferme la fenêtre de mon application, le programme continue à tourner pendant quelques minutes avant de s'arrêter.
    Je pense avoir identifié l'origine du problème mais je ne parviens pas à le régler. Voici le code :
    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
     
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        Thread loopThread = new Thread(InfiniteLoop);//création d'une boucle infinie
        loopThread.Start();
    }
     
    private void InfiniteLoop()
    {
        Checker c = new Checker();
        while (true)
        {
     
            c.checkUpdate();
     
            Thread.Sleep(int.Parse(c.getRegistry("TimeScale")) * 60000);//je met en veille mon thread
            if (this.isClosed)// "isCloded est un attribue de ma winforms qui est false par defaut et qui passe à true qd je ferme ma fenêtre
            {
                Application.ExitThread();
                break;
            }
        }
    }
    En gros je voudrait pouvoir que mon thread s'arrête au moment ou je ferme ma fenêtre. Je comprends que mon programme attends que la fin du sleep.

    Si quelqu'un à une idée sur la question...

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Salut,

    C'est par ce que ton thread est un "foreground" thread et un process ne se termine pas tant qu'un foreground thread tourne encore. Il faut en fait que tu crées un background thread (je pense que c'est une propriété du thread, je ne me souviens plus) qui lui va sera arrêté dés que l'appli se termine (dés que tous les foreground threads sont terminés).

    EDIT: propriété IsBackground de la classe Thread

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 57
    Points : 37
    Points
    37
    Par défaut
    Problème résolu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        Thread loopThread = new Thread(InfiniteLoop);
        loopThread.IsBackground = true;//<== pour définir le thread comme un background thread
        loopThread.Start();
    }

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

Discussions similaires

  1. Fin des processus en parallèle
    Par Bonjovi51 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 30/01/2014, 17h27
  2. détection de la fin des processus fils
    Par SoftAbdou dans le forum Linux
    Réponses: 6
    Dernier message: 15/07/2008, 00h06
  3. Réponses: 12
    Dernier message: 30/11/2006, 19h42
  4. Attendre la fin des threads fils d'un processus
    Par SteelBox dans le forum Windows
    Réponses: 15
    Dernier message: 24/02/2006, 16h08
  5. Réponses: 3
    Dernier message: 20/01/2005, 19h19

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