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 :

Programme C# qui ne s'arrête pas - comment débugguer?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Par défaut Programme C# qui ne s'arrête pas - comment débugguer?
    Bonjour,

    J'ai un problème dans mon programme C# en Framework 3.5. J'utilise un timer qui lance à intervalles réguliers une procédure importante.
    A la fermeture de l'application, je stoppe le timer.
    Souvent, lorsque j'arrête l'application, l'éditeur Visual Studio 2008 ne me rend pas la main, et même lorsque j'utilise mon programme en dehors de Visual Studio, la tâche ne se ferme pas lorsque j'éteins le programme, et même en patientant assez longtemps.

    Mon problème est que je ne sais pas comment retrouver ce qui crée ce problème.

    Je me demande si ce n'est pas dû à un problème d'allocation mémoire (je suis assez nouveau sur la plateforme .NET, j'étais sous Delphi 7 avant).

    Si vous avez des pistes de débuggage je vous en serai reconnaissant...

    David

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    N'aurais tu pas un thread qui tournerait et qui ne serait pas arreter à la fin de l'application ?

    En dehors de celà, je ne vois guère d'autres hypothèses !

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Par défaut
    Voila le seul thread que je lance parfois:

    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
            //*********************************************************************************************************
            //
            //
            //
            //---------------------------------------------------------------------------------------------------------
            static public void pause(int p_delai_pause)
            {
                BackgroundWorker pauseExecution = new BackgroundWorker();
     
                m_delai_pause = p_delai_pause;
     
                //-------------------------------------------------------------------------
                // Créer un nouveau worker en arrière-plan pour réaliser la tâche de pause
                //-------------------------------------------------------------------------
                pauseExecution.DoWork += COutils.pause_background;
                pauseExecution.RunWorkerAsync(); 
     
                 //-------------------------------------------------------------
                // Rafraichir l'interface jusqu'à ce que le worker ait terminé 
                //-------------------------------------------------------------
                while (pauseExecution.IsBusy)
                {
                    Application.DoEvents();
                }
     
            }
     
            //*********************************************************************************************************
            //
            // utilisé par fonction 'pause'
            //
            //---------------------------------------------------------------------------------------------------------
            static public void pause_background(object sender, DoWorkEventArgs e)
            {
                Thread.Sleep(m_delai_pause);
            }

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Si le traitement important est exécuté par un thread, vérifie que ce thread est déclaré comme background. Par défaut ce n'est pas le cas, et un thread foreground (par opposition à background) bloque la sortie tant qu'il n'a pas terminé.

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Par défaut
    Le traitement important n'est pas dans un thread, il peut lancer la fonction pause, qui elle est threadée, plusieurs fois, selon le besoin.

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Ca sert à quoi de "threader" un Sleep ?

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 72
    Par défaut
    Pour le moment c'est la seule façon que j'ai de ne pas bloquer l'affichage pendant le sleep.
    Je suis ouvert aux suggestions...

    Sinon mon interface est carrément bloquée pendant ce temps là.

Discussions similaires

  1. As typewriter qui ne s'arrête pas !
    Par Mirlipili dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 22/06/2007, 11h10
  2. [SQL] une requête qui ne s'arrête pas ou si loin
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/10/2006, 14h36
  3. Lancer une tâche planifiée qui ne s'arrête pas
    Par bart64 dans le forum Windows Serveur
    Réponses: 12
    Dernier message: 02/10/2006, 19h33
  4. [FLASH MX2004] Clip qui ne s'arrête pas
    Par romain starck dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 10/05/2006, 19h43
  5. [VBA-E]une boucle qui ne s'arrète pas
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/02/2006, 18h05

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