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 :

Socket UDP : exception avec Close en asynchrone?


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Socket UDP : exception avec Close en asynchrone?
    Bonjour,

    J'utilise un socket de manière asynchrone pour la réception avec la méthode BeginReceiveFrom. Lorsque je veux fermer le socket avec la méthode Close, le callback où se trouve EndReceiveFrom est appelé et EndReceiveFrom me donne une exception parce que je tente d'accéder à un objet disposed. Y a-t-il moyen d'arrêter la réception asynchrone avant de fermer le socket pour éviter l'exception?

    Merci.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Et bien appelle EndReceiveFrom avant de fermer; ca semble la solution la plus simple.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    EndReceiveFrom se trouve dans la méthode ASyncCallback de fin d'appel qui est appelée par la méthode Close du socket. C'est EndReceiveFrom qui lance une exception. Je dois tester si le socket existe toujours alors? Tester s'il est null?

    Merci

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Je te propose d'appeler EndReceiveFrom AVANT d'appeler le Close, ce qui devrait bloquer l'appel au CallBack (pour cela, il faut, bien entendu, que tu conserve le IAsyncResult retourné par le BeginReceive afin de le passer au EndReceiveFrom).

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    EndReceiveFrom est bloquant, donc mon application sera figée?
    Je pense peut-être utiliser un flag pour dire que je ferme le socket.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    On peut pas utiliser la méthode Shutdown(...) de Socket dans ce cas là ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Dans la msdn, il est écrit que l'utilisation de la méthode Shutdown pour un Socket sans connexion n'est pas recommandée, donc je n'ai pas essayé. Je peux quand même voir ce que ça donne.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/07/2010, 16h59
  2. Probleme avec Close Socket
    Par 0x44-0x43-0x53-0x43 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 13/12/2009, 22h37
  3. Questions sur Serveur avec Socket UDP
    Par Fused dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 19/08/2009, 10h14
  4. Problème avec socket UDP
    Par Prayeriz dans le forum Développement
    Réponses: 4
    Dernier message: 12/01/2009, 08h18
  5. Comment envoyer un grand tableau avec socket UDP
    Par jhon_milou dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 29/05/2007, 09h36

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