2 votes

c# BeginGetResponse : y a-t-il une raison de lire des octets de manière asynchrone dans le callback de la réponse ?

L'exemple de code MSDN pour BeginGetResponse comporte deux appels asynchrones, l'un pour obtenir la réponse, et l'autre pour lire la mémoire tampon de la réponse :

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx

Voir cette ligne :

// Begin the Reading of the contents of the HTML page and print it to the console.
  IAsyncResult asynchronousInputRead = responseStream.BeginRead(myRequestState.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);

Ma question est la suivante : quel est l'avantage par rapport à une lecture synchrone ?

Gracias.

2voto

Jacko Points 2464

Voici ce que j'ai compris à la suite d'investigations plus poussées : même si le rappel se produit sur un thread non-UI, la lecture asynchrone empêche ce thread de se bloquer. Tant que le thread est bloqué, il ne peut pas être réutilisé par le pool de threads, et une autre requête concurrente peut amener le pool à créer un thread supplémentaire, ce qui entraîne des frais généraux.

1voto

Haojie Points 4380

Je pense que l'avantage est que vous pouvez toujours faire des choses avec votre thread d'interface utilisateur après un appel asynchrone.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X