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

Windows Forms Discussion :

[C#] Problème sur un Thread


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut [C#] Problème sur un Thread
    Bonjour,
    J'ai un problème étrange (pour moi!!) sur l'exécution d'un thread.
    Le thread s'exécute pour certaines actions mais pas pour d'autre. Je viens essayé d'être bref. Je programme actuellement un DAC, une dll d'accés aux données unifiée. Je peux me connecter sur plusieurs bases (access, MySQL, PostgreSQL). Mon thread est assez simple, il ouvre une fenetre d'attente lors de l'initialisation de mon objet (connexion, récupération de certaines informations de la bdd, etc.) et se ferme à la fin de l'initialisation. Le tout est donc gérer par des événements associés à ma dll.
    Lorsque j'initialise mon objet : un événement de début et de fin d'initialisation sont déclenchés.
    D'où le code :
    Attribution des événements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TotalConnexion.OnPreInit += newDACEventHandler(TotalConnexion_OnPreInit);
    TotalConnexion.OnInit += newDACEventHandler(TotalConnexion_OnInit);
    TotalConnexion.OnFinInit += newDACEventHandler(TotalConnexion_OnFinInit);
    
    Code de ma fonction, qui sera délégué au 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
    privatevoid MonAttente()
    {
    MaFenetreAttente = newXtraUserControlAttente(this.textEditNomBdd.Text);
    XtraForm MaFenetreReception = newXtraForm();
    MaFenetreReception.AutoSize = true;
    MaFenetreReception.AutoSizeMode = AutoSizeMode.GrowAndShrink;
    MaFenetreReception.Text = "Connexion distante...";
    MaFenetreReception.FormBorderStyle = FormBorderStyle.FixedToolWindow;
    MaFenetreAttente.Parent = MaFenetreReception;
    MaFenetreReception.StartPosition = FormStartPosition.CenterParent;
    MaFenetreReception.ShowDialog();
    MaFenetreReception.Refresh();
    }
    
    Code correspondant aux événements :
    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
    privatevoid TotalConnexion_OnPreInit(object sender, EvenementDAC ev)
    {
    MonThread = newThread(newThreadStart(MonAttente));
    MonThread.Start();
    // MaFenetreAttente.label1.Text = "Preinit";
    }
    privatevoid TotalConnexion_OnInit(object sender, EvenementDAC ev)
    {
    // MaFenetreAttente.label1.Text = "OnInit";
    }
    privatevoid TotalConnexion_OnFinInit(object sender, EvenementDAC ev)
    {
    // MaFenetreAttente.label1.Text = "Fin";
    MonThread.Abort();
    }
    
    Ce code marche losque je me connecte à ma base access en local (la fenetre décrite dans "MonAttente()" s'affiche), mais ne marche pas pour MySQL et PostgreSQL (sur serveur distant). Pourtant, lors du débuggage, toutes les fonctions ci-dessus sont exécutées (notament MonThread.Start()). La fenêtre ne s'affiche pas malgré tout.
    Si vous avez une idée, ou si vous souhaitez des précisions sur mon code, n'hésitez pas.
    Merci d'avance à la communauté Developper.com
    Bisounux.

  2. #2
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Salut

    Est-tu certain que ton DAC Postgre et Mysql fonctionnent correctement? Il se pourrait qu'il y ait une exception quelque part qui soit levee et que du coup la form ne s'affiche pas.

    Le code marchant avec Access, je pense que le probleme ne vient pas du threading. Teste ton code avec les deux autres providers sans thread pour voir...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Les providers marchent sans problèmes, il n'y a pas d'exception levée. D'ailleurs, au debuggeur, tous les événements sont levés, le thread est exécuté mais rien ne s'affiche. Je ne vois vraiment pas d'où ça vient

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Bonsoir,
    J'ai trouvé quelque chose d'intéressant sur le problème...
    Voici une partie du code précédent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    privatevoid MonAttente() { MaFenetreAttente = newXtraUserControlAttente(this.textEditNomBdd.Text); XtraForm MaFenetreReception = newXtraForm(); MaFenetreReception.AutoSize = true;MaFenetreReception.AutoSizeMode = AutoSizeMode.GrowAndShrink; MaFenetreReception.Text = "Connexion distante..."; MaFenetreReception.FormBorderStyle = FormBorderStyle.FixedToolWindow; MaFenetreAttente.Parent = MaFenetreReception; MaFenetreReception.StartPosition = FormStartPosition.CenterParent; MaFenetreReception.ShowDialog(); MaFenetreReception.Refresh(); }
    Avec Access (lorsque ça ne "plante" pas), toute la procédure est parcourue, avec les autres, MySql, PostgreSQL... Il y a juste la première ligne qui est exécuter donc pas d'affichage, ensuite le programme continu à s'exécuter comme si de rien n'était... C'est vraiment bizzare. Non ?
    Merci pour vos réponses.
    Bisounux

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Bonjour,
    Je progresse... En fait, le thread à l'air de se finir avant que la fonction MonAttente se termine. C'est assez bizarre... Je cherche, si quelqu'un a une idée

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Quelqu'un a déjà entendu parler des sémaphores?

  7. #7
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Citation Envoyé par bisounux
    Quelqu'un a déjà entendu parler des sémaphores?
    Moi

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 46
    Par défaut
    Je n'arrive vraiment pas à comprendre ce qui se passe... Mon prof n'a pas pu m'aider.... Si un sauveur a une idée, ça serait vraiment bien.
    Merci d'avance.

Discussions similaires

  1. Problèmes sur les Threads (acte 2)
    Par Patrice Henrio dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 29/01/2014, 16h26
  2. Ubuntu 11.10 sur Vmware : problème de multi-threading?
    Par khealou dans le forum Threads & Processus
    Réponses: 1
    Dernier message: 30/12/2012, 11h33
  3. Problème de pointeur sur plusieurs threads
    Par Schpitt dans le forum Threads & Processus
    Réponses: 4
    Dernier message: 01/09/2010, 19h56
  4. problème sur les threads et les sémaphores
    Par ramislebob dans le forum Windows
    Réponses: 1
    Dernier message: 29/06/2006, 11h52
  5. [C#] - Problème sur fermeture d'un thread
    Par Erakis dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/01/2006, 01h22

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