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

VB.NET Discussion :

Erreur socket System.InvalidOperationException


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 5
    Par défaut Erreur socket System.InvalidOperationException
    Bonsoir,

    J'essaye en ce moment de faire un chat en socket, j'utilise les méthodes asynchrones. Tout fonctionne mais de temps en temps j'ai cette erreur, le débugger ne la localise pas (thread séparé sûrement) mais m'affiche cela:

    Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans mscorlib.dll

    Informations supplémentaires*: L'opération d'annulation a rencontré un autre contexte que celui qui était appliqué dans l'opération Set correspondante. Il est possible qu'un contexte ait été défini sur le thread et non restauré (rétabli).
    Voilà... je ne vois vraiment pas quoi faire [^^sad1]

    Merci d'avance pour toutes vos réponses

    Ant95

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    malheureusement sans code il faut des dons de voyance ...
    et il faudrait aussi la ligne qui a déclenché l'erreur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par ant95 Voir le message
    de temps en temps j'ai cette erreur, le débugger ne la localise pas
    Il dit quoi exactement ? Tu peux voir la pile des appels dans le debugger (fenêtre Pile d'appels de Visual Studio) ?

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 5
    Par défaut
    Bonjour,

    Désolé de ne répondre que maintenant, donc le code tiens sur plusieurs classes, difficile de le mettre comme ça et je ne peux même pas vous donner la ligne:

    le débugger ne la localise pas
    L'erreur est apparemment sur un thread séparé donc le débugger ne peut même pas savoir d'où ça vient et ce qui est bizarre, c'est que même en foutant des Try partout avec des MsgBox pour essayer de trouver l'erreur ça ne marche pas.

    J'espérais que quelqu'un connaisse cette erreur mais c'est vrai que le message d'erreur est assez général mais je n'en sais pas plus

    Merci pour vos réponses et si vous ne trouvez pas de solutions... tant pis, je finirai bien par trouver un jour

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 5
    Par défaut
    Pour répondre à tomley, je vois effectivement la pile des appels mais il n'y a rien dedans....

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par ant95 Voir le message
    L'erreur est apparemment sur un thread séparé donc le débugger ne peut même pas savoir d'où ça vient
    Le debugger peut tout à fait déboguer ce qui se passe sur d'autres threads... Il y a une fenêtre "Threads" dans Visual Studio qui te permet de passer de l'un à l'autre

    Citation Envoyé par ant95 Voir le message
    et ce qui est bizarre, c'est que même en foutant des Try partout avec des MsgBox pour essayer de trouver l'erreur ça ne marche pas.
    Normal, seul le thread principal peut appeler MsgBox


    Citation Envoyé par ant95 Voir le message
    Pour répondre à tomley, je vois effectivement la pile des appels mais il n'y a rien dedans....
    Rien dedans ?
    Jamais vu ça...


    Quand l'exception s'affiche, regarde les détails et copie ici la propriété StackTrace

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 5
    Par défaut
    Le debugger peut tout à fait déboguer ce qui se passe sur d'autres threads... Il y a une fenêtre "Threads" dans Visual Studio qui te permet de passer de l'un à l'autre
    Hmmm, avec la version Express je ne vois pas cette fenêtre...

    Normal, seul le thread principal peut appeler MsgBox
    J'ai essayé d'appeler MsgBox depuis un autre thread et ça marche

    Rien dedans ?
    Jamais vu ça...
    Sisi, je viens encore de vérifier il n'y a rien . Le débugger m'affiche une erreur sans m'indiquer la ligne et il n'y a rien dans la pile des appels.

    Quand l'exception s'affiche, regarde les détails et copie ici la propriété StackTrace
    Je vais voir ça mais il me semble qu'il n'y a rien...

    Sinon autre chose, j'ai essayé d'utiliser l'évènement UnhandledException pour intercepter l'erreur mais ça ne marche pas non plus

    Je crois que mon problème n'est pas réglable, si il n'est pas résolu avant Dimanche j'abandonnerai, tant pis... En tout cas merci beaucoup pour les réponses

    Ant95

  8. #8
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Rien dedans ?
    Jamais vu ça...
    Je crois que ce que le mossieur veut dire, c'est qu'il voit passer l'exception dans la fenêtre output mais qu'elle n'interrompt pas le flux d'execution et par conséquent la fenêtre de call stack n'est pas utilisée.

    ant95, utilises tu des librairies tierces?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Bonjour à tous,

    après avoir galérer des heures sur ce même soucis, je pense avoir trouvé la solution !

    Chez moi, c'est lié au multi threading, et à la fermeture d'une socket alors qu'un BeginReceive() avait été émis
    --> j'ai donc rajouté un flag pour décaler le Socket.Close() après réception des dernières données...

    Référence de l'info: http://msdn.microsoft.com/en-us/library/w7wtt64b.aspx

    All I/O initiated by a given thread is canceled when that thread exits. A pending asynchronous operation can fail if the thread exits before the operation completes.

    Une petite explication pour l'exception impossible à catcher ou à situer:
    elle se produit dans un thread de travail créé par la CLR pour gérer l'asynchronisme, et comme ce n'est pas un code écrit par le programmeur, il est impossible de la trapper.

Discussions similaires

  1. Problème erreurs sockets sous Linux
    Par Ange44 dans le forum Linux
    Réponses: 6
    Dernier message: 05/09/2006, 16h16
  2. Réponses: 2
    Dernier message: 24/07/2006, 16h59
  3. Erreur Socket Asynchrone 10053
    Par QAYS dans le forum Delphi
    Réponses: 2
    Dernier message: 16/06/2006, 07h44
  4. TIdHTTPServer et erreur socket # 10049
    Par DaRiaN dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/04/2006, 16h04
  5. SQL Server: Java Erreur Socket
    Par BenoitM dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/04/2003, 16h32

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