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 Forms Discussion :

"Tuer" un BackGroundWorker


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut "Tuer" un BackGroundWorker
    Bonjour,

    j'utilise un BackGroundWorker pour un connexion réseau. Le problème c'est que le serveur met 5 secondes ou 5 minutes à me répondre.
    Je ne peux donc pas utiliser Socket.Poll().
    Oui, mais si le serveur plante et ne répond plus, mon BackGroundWorker reste donc bloquer. Je souhaite donc tuer mon backgroundworker (comme tuer un processus) car il va bloquer sur Socket.Send().
    Est-ce possible et si oui comment faire je n'ai rien trouvé sur Internet.

    Merci

  2. #2
    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
    Normalement on utilise CancelAsync, mais si le thread de ton BackgroundWorker est bloqué sur un appel de méthode tu ne peux pas tester CancellationPending... Tu pourrais exécuter le send de manière asynchrone (BeginSend ou SendAsync) de façon à pouvoir arrêter le backgroundworker en testant CancellationPending, mais ça n'interromprait pas le send puisqu'il serait exécuté sur un autre thread...

  3. #3
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    Cette nuit j'ai eu une idée.
    Faire un boucle avec Socket.Poll.
    Si c'est false, on ne fait rien, si c'est true on envoie le donnée. Donc, dans la boucle on regarde CancellationPending.
    Comme ça pas de blocage !

    Merci de tes conseils

  4. #4
    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
    comme quoi, la nuit porte conseil

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

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