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 :

Gérer les exceptions dans un thread


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Par défaut Gérer les exceptions dans un thread
    Bonjour,

    J'ai un thread dans lequel je n'arrive pas à gérer les exceptions.

    Après quelques recherche sur internet j'ai trouvé quelques piste que je n'arrive pas à adapter.
    Je vous demande donc votre aide pour trouver une solution et essayer de me l'expliquer simplement.

    Pour l'instant, j'ai simplement un try/catch avec un "throw new Exception".

    Voici l'appel de mon thread :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try
    {
    ThreadStart threadDelegate=new  ThreadStart(Fct.Routine.LancerRoutine);
    threadRoutine = new Thread(threadDelegate);
    threadRoutine.Start();
    Thread threadRoutine;
    }
    catch(Exception exc)
    {
    Fct.signaler(exc);
    }

    Et voici mon thread :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     public static void LancerRoutine()
            {
                try
               {
                      // Code.
                }
                catch (Exception _ex)
                {
                    throw new Exception(_ex.Message, _ex);
                }

  2. #2
    Membre actif
    Homme Profil pro
    Architecte C#
    Inscrit en
    Février 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte C#

    Informations forums :
    Inscription : Février 2003
    Messages : 78
    Par défaut
    Salut, plutot compliqué, mais c'est le plus propre que j'ai trouvé :

    1° une méthode pour traiter l'exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    static void Signaler(Exception ex)
            {
                // Mon code pour afficher la fenetre
                Console.WriteLine(ex.ToString());
            }

    2° L'utilisation de cette méthode dans LancerRoutine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    static void LancerRoutine(object action)
            {
                Debug.Assert(action is Action<Exception>);
                var signaler = (Action<Exception>) action;
                try
                {
                    throw new NotImplementedException("Ah ah ah !");
                }
                catch (Exception e)
                {
                    signaler(e);
                }
            }
    A noter que je passe un object, je n'ai pas trouvé de moyen de combler cette limitation du ParameterizedThreadStart, d'où le besoin de l'assertion.

    Cette assertion permet de passer à la méthode lancerRoutine une méthode pour traiter l'exception

    et enfin, la création du thread et son appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Thread thread = new Thread(LancerRoutine);
    thread.Start(new Action<Exception>(Signaler));
    En espérant que ca ait pu t'aider

  3. #3
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Passer les exceptions en thread c'est parfois du sport
    Vaut mieux passer bar un Backgroundthread, ou une Task.

  4. #4
    Membre très actif Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Par défaut
    Je vous remercie pour vos réponse,

    Je vais essayer cela et je vous fais un retour dès que possible.

  5. #5
    Membre très actif Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Par défaut
    Je reviens sur le post.

    Je developpe une application asp.net je suis donc passer par un objet de Session avec un timer pour gérer ces exceptions.

    Je vous remercie pour vos réponses.

  6. #6
    Membre actif
    Homme Profil pro
    Architecte C#
    Inscrit en
    Février 2003
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte C#

    Informations forums :
    Inscription : Février 2003
    Messages : 78
    Par défaut
    Tu pourrai nous mettre un exemple, par curiosité ?

    J'ai un très mauvais souvenir du multithreading avec IIS....

    Merci d'avance

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

Discussions similaires

  1. Gérer les exceptions dans le web.config
    Par Maestro57 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/11/2009, 20h37
  2. Gérer les exceptions dans un package
    Par Invité dans le forum SQL
    Réponses: 2
    Dernier message: 26/03/2008, 10h09
  3. Réponses: 3
    Dernier message: 29/05/2007, 16h50
  4. [C#/SQL] Comment gérer les exceptions d'une Procédure stockée ?
    Par thomas_strass dans le forum Accès aux données
    Réponses: 10
    Dernier message: 06/07/2005, 10h40
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 13h39

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