2009-07-13 5 views
1

Je suis peut-être tout malentendu quelque chose de fondamental ici, mais ...System.Net.Sockets.NetworkStream de Async lire le rappel

Sénario: J'appelle System.Net.Sockets.NetworkStream méthode « s BeginRead et ma machine reçoit une réponse/demande à partir d'un périphérique réseau. L'exécution exécute mon rappel dans son propre thread. Avant que ce fil puisse appeler EndRead, la machine reçoit une autre réponse/demande.

Question: Est-ce que le temps d'exécution appeler mon rappel dans un autre thread immédiatement ou attendre pour moi d'appeler EndRead puis BeginRead à nouveau?

Répondre

1

Il devrait exécuter la méthode de rappel immédiatement dans un autre thread. (d'où les appels asynchrones plutôt que de bloquer).

+0

Sûrement c'est faux? Il n'y a qu'un seul callback par appel à BeginRead() donc à moins d'appeler à nouveau BeginRead() dans le callback, vous ne lirez plus de données? –

2

Vous devez appeler EndRead, puis BeginRead à nouveau pour gérer le nouveau message entrant.