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

Dotnet Discussion :

Comment utiliser le multithread dans mon cas?


Sujet :

Dotnet

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut Comment utiliser le multithread dans mon cas?
    Bonjour,

    Je n'ai encore jamais utilisé le multithreading dans mes developpements.

    Aujourd'hui je pense en avoir besoin. Cependant, même après plusieurs lecture d'exemples sur le net, je n'arrive pas à comprendre comment utiliser ce concept.

    Dans mon project j'ai une fonction qui écoute constamment sur un port (elle contient un web server), lorsqu'une requête arrive, je lui répond et ainsi de suite...tout ceci dans une boucle infinie.
    Mais je souhaite cependant voir ce qui se passe: si ya des erreurs etc.

    En parallèle, je souhaite effectuer des traitements indépendament de la fonction d'écoute décrite plus haut.

    Pour les deux fonctions j'ai fait en sorte de ne pas avoir à passer des paramètres.


    Merci de bien vouloir m'orienter sur une solution qui convient à ce que je souhaite faire.

  2. #2
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    Bonjour,

    Qui va lancer tes traitements indépendants?

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    C'est moi même, c'est à dire l'utilisateur:
    Je lance l'écoute puis je passe au traitement derrière

  4. #4
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    Dans ce cas, j'aurais tendance à dire:

    Un main thread qui va lancer les traitements dans ce même thread, ou dans des threads séparés, tout dépend de la nature des traitements.
    Ce main thread va également lancer au début de son exécution un seul et unique thread qui va s'occuper uniquement de l'écoute de connexion client.
    A la connexion d'un client, le thread d'écoute va lancer un autre thread qui sera dédié à la communication avec le nouveau client.

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Ce que j'ai fais comme implémentation à présent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim EcouteClients As EcouteClient = New EcouteClient
     
    Dim Thread1 As New System.Threading.Thread(AddressOf EcouteClients.Ecoute)
     
    Thread1.Start()
     
    FonctionTraitement()

    Le thread1 je veux qu'il tourne en arrière plan, sans m'en occuper, durant tout le traitement de la deuxième fonction.
    Donc je ne sais pas si ce que j'ai fait est une bonne solution.

  6. #6
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    La classe Thread possède une propriété IsBackground (par défaut à false), que tu peux setter à true.
    La différence est que quand tu vas stopper l'application, tous tes threads background vont être automatiquement stoppés, alors que si tu laisses la propriété à false, et que tu stoppes l'application, le thread continueras de tourner.

  7. #7
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut
    Je me demande quand même... Dans quel contexte tu veux intégrer un serveur directement au sein de ton application utilisateurs?

  8. #8
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Je viens de voir qu'il existe une class appelée BackgroundWorker.

    Il me semble que cela peux s'appliquer à mon cas

  9. #9
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par bakonu Voir le message
    La classe Thread possède une propriété IsBackground (par défaut à false), que tu peux setter à true.
    La différence est que quand tu vas stopper l'application, tous tes threads background vont être automatiquement stoppés, alors que si tu laisses la propriété à false, et que tu stoppes l'application, le thread continueras de tourner.
    C'est noté merci!

  10. #10
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par bakonu Voir le message
    Je me demande quand même... Dans quel contexte tu veux intégrer un serveur directement au sein de ton application utilisateurs?
    C'est une web serveur qui écoute les requêtes provenant de l'extérieur, il est dans un boucle infinie, donc il écoute constament et si une requête arrive il répond et ainsi de suite. C'est la raison pour laquelle je souhaite qu'il tourne en arrière plan sans m'en soucier à part si ca plante quelque part, dans ce cas une exception devrait être affichée.

  11. #11
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Ce que je n'arrive pas à comprendre c'est que le thread1 ne se lance pas tant que moi j'avance pas dans mon code (pas à pas). Et même si je fait un run, je m'arrête à chaque fois automatiquement...

  12. #12
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Je ne sais pas si quelqu'un à déjà rencontré ce cas.

    Mais c'est vraiment pas évident si l'en souhaite lancer l'application et la laisser tourné sans qu'on est besoin d'appuyer sur F5 à chaque fois...

    Merci de bien vouloir m'indiquer comment faire pour résoudre ce problème.

  13. #13
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    J'ai trouvé le problème: il y avait des breaks points dans le code que j'ai oublié d'enlever, du coup l'application s'arrêtait à chaque fois.

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

Discussions similaires

  1. Comment utiliser les thread dans ce cas ?
    Par ketchupi dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 03/06/2011, 00h56
  2. [PHP 5.2] Comment retinrer les accent dans mon cas
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 15/06/2009, 15h56
  3. Comment utiliser les datasets dans mon cas
    Par dachir dans le forum ASP.NET
    Réponses: 5
    Dernier message: 13/01/2009, 09h44
  4. [Tableaux] Comment utiliser un tableau dans ce cas
    Par Equinoxe5 dans le forum Langage
    Réponses: 1
    Dernier message: 19/08/2007, 22h13
  5. Comment aborder les collisions dans mon cas?
    Par MonsieurHelmut dans le forum Physique
    Réponses: 4
    Dernier message: 18/02/2007, 16h56

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