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 :

InvalidOperationException was unhandled by user code


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Points : 59
    Points
    59
    Par défaut InvalidOperationException was unhandled by user code
    Bonjour,

    Je tourne sur un projet pour ma boite, qui me demande a faire la communication entre deux programmes, un client de jeu et un éditeur. Pour ça, je fais communiquer les deux via un pipe local, créé avec le ServiceHost.

    Mon soucis vient de l'éditeur. L'une des fonctions appelée via le serviceHost permet d'importer une nouvelle page au choix du client de jeu, hors j'ai un breakpoint qui se déclenche sous VisualStudio :

    /!\ InvalidOperationException was unhandled by user code

    Cross-thread operation not valid: Control 'comboBox1' accessed from a thread other than the thread it was created on.
    Je comprend que c'est une histoire de thread, par contre je n'ai absolument aucune idée de ce qui le déclenche et encore moins la solution pour le corriger.

    Si des gens qui ont déjà eu ce genre de problème pouvais éclairer mes lumières.

    Spidyy

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    depuis un thread autre que le thread principal on ne peut pas modifier l'interface (les controles)
    il faut dire au thread principal de le faire

    3 méthodes :
    - utiliser un backgroundworker à la place du thread (il a des évènements relayés sur le thread principal)
    - passer par un délégué
    - utiliser un timer
    si ce n'est pas toi qui démarre le thread, le backgroundworker ne sera pas possible

    pour le délégué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private delegate void DelmajUnControle(string info);
     
    private void majUnControle(string info)
    {
        // si true alors cette ligne est exécutée sur un autre thread que le thread principal
        if (uncontrole.invokerequired) {
            DelmajUnControle d = new DelmajUnControle(majUnControle);
            //ou directement uncontrole.invoke(new Action<string>(majUnControle), info) // ce qui évite de déclarer un délégué
        }
     
        majUnControle().text = info;
    }
    pour le timer il faut depuis le thread modifier une classe non graphique, et avec le timer transférer les données des classes vers les controles

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Points : 59
    Points
    59
    Par défaut
    Yarr, merci!

    J'ai utilisé la méthode Invoke(new Action), ça marche à merveille!

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    tu peux cliquer sur résolu en bas de cette page

    et la prochaine fois essaie de trouver un titre plus approprié, comme le texte de l'erreur que tu as, car ca n'a rien à voir avec ServiceModel

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

Discussions similaires

  1. InvalidOperationException was unhandled
    Par gastoncs dans le forum VB.NET
    Réponses: 1
    Dernier message: 15/10/2011, 11h48
  2. Réponses: 2
    Dernier message: 07/10/2009, 10h35
  3. "Exception was unhandled" Erreur pas bien claire
    Par Just-Soft dans le forum C#
    Réponses: 2
    Dernier message: 17/03/2009, 14h32
  4. stackOverflowException was unhandled
    Par catherine* dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 18/01/2008, 13h15
  5. SecurityException was unhandled
    Par matrix_ceg dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/10/2007, 14h45

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