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 :

Zedgraph et les threads


Sujet :

C#

  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Zedgraph et les threads
    Bonsoir,

    Pour mon projet au BTS, actuellement il y a un étudiant que s'occupe de la gestion qui est démarré une Winform. la Form contiens en faite juste un splashScreen que l'on affiche ou pas suivant l'attente de l'IHM.
    Il contiens aussi la gestion bien sur, vu son nom.

    La Gestion démarre l'IHM dans un thread de cette façon:

    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
     
     
     
    private static IHMreleve.IMHReleve _IHMForm;
     
     
     public GestionReleve()
            {
                _IHMForm = new IHMreleve.IMHReleve(_PresenceSGBD);
     
                _IHM = new Thread(new ThreadStart(IHMStart));
     
                _IHM.SetApartmentState(ApartmentState.STA);
     
                //Demarrage du thread IHM
                _IHM.Start();
     
            }
            private static void IHMStart()
            {
                _IHMForm.ShowDialog();
            }
    Tout se passe bien, mon IHM démarre, les transferts que j'ai géré avec des Invoke et delegate passe trés bien.

    Mon IHM est composé d'un tablecontrol, et au moment ou je vais dans l'onglet qui contient mon Zedgraph il me plante avec une exception :
    Opération inter-threads non valide :

    Le contrôle 'zedGraph1' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
    sur
    Pourtant mon Zedgraph est démarrer uniquement dans le thread IHM, je comprend pas pourquoi il me fait sa?

    Auriez vous une idée, s'il vous plait?

    Je sais que démarrer une Winform qui en démarre une autre c'est pas le top.


    Je pensais au départ, démarrer un mode console mais l'élève n'a pas trouvé comment ne pas afficher la console. Et dans ce cas on aurait gérer le splashscreen par une autre moyen pour qu'il fasse que ca. Moi j'ai pas chercher cette solution de mon coté , 'occupant de l'IHM et vu que pourm le moment mes simulations marchaient, il y a juste Zedgraph qui m'embête.

  2. #2
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Bon j'ai trouvé le pourquoi.

    Maintenant il me reste a trouver comment faire.


    En fait je crée mon objet _IHMForm en dehors du thread du coup l'objet Zedgraph est apparemment crée en dehors du thread. Et lorsque je veux l'afficher, cela plante.

    Reste à voir comment faire pour qu'il soit bien crée dans le thread de l'affichage.

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Soit il faut que je trouve un moyen d'initialisé mon _IHMForm dans mon thread mais que puisse appeler ces méthodes en dehors du treadIHM.

    Soit il faut que je crée l'objet Zedgraph dans mon IHM et pas avec un composant initialisé dans : InitializeComponent(); mais pour le moment je n'y suis pas arrivé. Un peut d'aide s'il vous plait.

  4. #4
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Bon ba c'est bon j'ai trouvé mais il me semblait que cela me créait une exception en faisant comme sa lorsque je voulais appeler dans le Thread 1, des méthodes du thread 2 :

    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
    private static IHMreleve.IMHReleve _IHMForm;
     
     
     public GestionReleve()
            {
                //_IHMForm = new IHMreleve.IMHReleve(_PresenceSGBD);
     
                _IHM = new Thread(new ThreadStart(IHMStart));
     
                _IHM.SetApartmentState(ApartmentState.STA);
     
                //Demarrage du thread IHM
                _IHM.Start();
                thread.sleep(1000);
                Get();
            }
            private static void IHMStart()
            {
                _IHMForm = new IHMreleve.IMHReleve(_PresenceSGBD);
                _IHMForm.ShowDialog();
            }
            private static voir Get()
           {
                string ligne = _IHMForm .Get(); // cela marche quand même
           }

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

Discussions similaires

  1. Aide sur les Threads
    Par themoye dans le forum MFC
    Réponses: 24
    Dernier message: 06/03/2005, 15h02
  2. Les Threads... J'en remet une couche :)
    Par Higestromm dans le forum C++
    Réponses: 5
    Dernier message: 17/11/2004, 12h19
  3. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25
  4. Question simple sur les threads :)
    Par momox dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/06/2003, 04h13
  5. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59

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