Bonjour,
j'aimerai que le main thread puisse envoyer des données à un autre thread(créé dans ce main thread), dés qu'il y a un evenement particulier dans la mainForm (appui sur un bouton par exemple).
Merci
Bonjour,
j'aimerai que le main thread puisse envoyer des données à un autre thread(créé dans ce main thread), dés qu'il y a un evenement particulier dans la mainForm (appui sur un bouton par exemple).
Merci
Ca fait 2 threads pour gérér les événements :
Des fois que deux utilisateurs cliquent en même temps
lol ouai mais nan , c'est juste le mainthread qui gere les evenements et qui aprés coups en informe le deuxieme thread. J'ai dejà vu quelqu'un poser cette question, par hasard, mais je n'arrive pas à y remettre la main dessus
Avant de trouver une solution, il faudrait être convaincu qu'il faut un autre thread : donnes des détails.
voilà, en fait, j'etais interessé par capturer les paquets de données transitant entre mon pc et internet, et la seule librairie qui soit à la hauteur est wpcap. J'ai trouvé ce site qui propose un wrapper "light" de la librairie:http://www.codeproject.com/dotnet/do...=26#xx839162xx
Dans le code, il y a une methode ReceivePacket qui est appelé à chaque reception d'un paquet, et le parametre pour le paquet est un tableau de bytes. Donc j'aimerai bien traiter ce tableau de byte en l'envoyant (comme parametre)à un autre thread. Ca permet de pas encombrer ReceivePacket . En effet suffit que je rajoute trop de ligne de code et au bout d'une centaine de paquets reçus, on dirait que ReceivePacket ne suit plus et ca deconnecte le socket.
Voilà
La difficulté n'est pas de créer un thread supplémentaire mais de gérer la communication entre les deux.
A mon avis, il faut passer les données par une FIFO (classe Queue). Le handler d'evt place la donnée dans la FIFO et le thread de traitement scrute la taille de la FIFO pour traiter les paquets.
Chaque accès à la FIFO doit être synchronisé par exemple avec Monitor.Enter(_queue) / Monitor.Exit(_queue)
Utilise ThreadPool.QueueUserWorkItem() pour lancer le thread de traitement.
Pas besoin de s'occuper de la fin de ce thread puisqu'il est détruit par le ThreadPool à la fermeture de l'appli.
Voilà.
impec,donc y'a une solution merci je vois ca demain.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager