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 Presentation Foundation Discussion :

Probleme de thread


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2004
    Messages : 161
    Par défaut Probleme de thread
    bonjour;

    je voudrais creer un speedtest avec wpf et iperf(exigé...)

    donc tout marche nickel sauf pour afficher le resultat sur un control,voici le code,

    je clique sur un bouton dans le fenetre principal pour executer ceci
    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
     
    string path = "cd C:\\Iperf";
                string com = "iperf3 -c serveur -p5206 -P2 –t3 -TUL";
     
                string strCmdText = "/C " + path + "&" + com;
     
     
                ProcessStartInfo startInfo = new ProcessStartInfo("cmd", strCmdText)
                {
                    WindowStyle = ProcessWindowStyle.Hidden,
                    UseShellExecute = false,
                    RedirectStandardOutput = true,
                    CreateNoWindow = true
                };
                string str = string.Empty;
                Process process = Process.Start(startInfo);
                process.OutputDataReceived += Process_OutputDataReceived9;
                process.BeginOutputReadLine();
                process.WaitForExit();
    en suite voici le fonction Process_OutputDataReceived9

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (e.Data != null)
                        if (e.Data.StartsWith("UL:  [SUM]") && !(e.Data.EndsWith("receiver") || (e.Data.EndsWith("sender"))))
                        {
                            string[] strTab = e.Data.Split(' ');                      
                            Lbl_DL2.Content = strTab[13].ToString();
     
                        }
    j'obtient une exception comme suit

    Le thread appelant ne peut pas accéder à cet objet parce qu'un autre thread en est propriétaire.

    je comprend bien mais je ne sait pas comment résoudre ce problème.

    une aide svp?

  2. #2
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Ne connaissant que peu WPF, je ne peux que donner des pistes, pas la solution finale, mais cela devrait aider malgré tout.

    Le soucis qui se pose, c'est que le thread graphique est le seul en mesure d'effectuer des opérations sur les widgets graphiques. Si une opération est faite depuis un autre thread, on obtient le genre d'exception que tu as. C'est la même chose en WinForms par exemple.

    En lisant la MSDN, l'approche est d'appeler la méthode BeginInvoke du Dispatch. L'article de la MSDN est assez complet. Une lecture attentive devrait donc permettre de résoudre le problème.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juillet 2004
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2004
    Messages : 161
    Par défaut
    Bonjour;

    finalement j'ai trouvé l solution,comme tu la dit

    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
     
     
     
    if (e.Data != null)
                        if (e.Data.StartsWith("UL:  [SUM]") && !(e.Data.EndsWith("receiver") || (e.Data.EndsWith("sender"))))
                        {
                            App.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
                                  {
                                          MainWindow wind = App.Current.MainWindow as MainWindow;                       
     
                                          wind.Lbl_DL2.Content = e.Data;
     
                                   }, null);
     
                        }
    ça marche plutôt bien,le Control et bien mis a jour

    Merci

Discussions similaires

  1. Probleme de Thread ??
    Par glycerine dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 29/04/2006, 19h04
  2. Probleme de threads et de pipes
    Par Marc san dans le forum C
    Réponses: 7
    Dernier message: 22/02/2006, 21h32
  3. Probleme de threads
    Par cryptorchild dans le forum Langage
    Réponses: 7
    Dernier message: 02/02/2006, 02h27
  4. Problème de threads avec pthread_create
    Par 180degrés dans le forum Linux
    Réponses: 6
    Dernier message: 19/12/2005, 12h07
  5. Probleme fermeture Thread
    Par Raton dans le forum MFC
    Réponses: 4
    Dernier message: 29/09/2005, 09h51

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