2009-07-16 4 views
0

Désolé, je suis très nouveau à tout ce genre de choses multithreading ...exécution de threads Async IO à terminer en même ordre que reçu

Je travaille sur une application client/serveur et je vais utiliser System.Net.Sockets.NetworkStream Async IO méthodes.

Je suis conscient qu'après avoir appelé BeginRead, le système commencera à appeler mon rappel chaque fois qu'il recevra des données. Le rappel peut prendre beaucoup de temps à terminer, mais il doit être terminé avant que tous les autres threads exécutent ce même rappel.

Si je signale simplement que ma méthode de rappel est synchronisée, cela devrait-il suffire pour que chaque tâche de rappel se termine dans l'ordre où le système a reçu ses données?

Sinon, quel outil de synchronisation serait le meilleur? (par exemple Monitor s, WaitHandle s, Semaphore s ?, etc ...)

Edit: cela est en VB 2008 sur Windows Server 2008

+0

langue/plateforme? – Javier

Répondre

1

Chaque BeginRead correspondait à un seul EndRead. Si vous voulez en savoir plus, vous devez rappeler BeginRead dans le rappel.


BTW, les sockets sont assez bas niveau. Êtes-vous sûr de ne pas pouvoir utiliser WCF pour cela?

+0

Je ne le savais pas. Merci. On m'a déjà dit que le système continuerait à appeler le callback jusqu'à ce que EndRead soit appelé. – mcjabberz

+0

Je n'ai pas regardé dans WCF, mais c'est pour une horloge, donc je dois être capable de jouer avec les bits un peu. – mcjabberz

+0

Horloge, ok, TCP/IP c'est. :-) –

Questions connexes