2011-02-08 17 views
5

Tengo una aplicación MonoTouch que usa un ThreadPool para administrar el número de hilos de fondo. Si hago que el ThreadPool genere un hilo y dentro del hilo, se activa una solicitud web Async, ¿la solicitud web generará un segundo hilo? si es así, ¿se quitará ese hilo del ThreadPool?ThreadPool.QueueUserWorkItem con llamada Async dentro del hilo

¿Cuál es la mejor práctica para tal cosa? ¿Debería la solicitud web simplemente ser una llamada síncrona, para disminuir el conteo actual de hilos?

ThreadPool.QueueUserWorkItem(callback => 
{ 
    WebClient client = new WebClient(); 
    client.DownloadStringAsync(new Uri("http://www.google.com/")); 
    client.DownloadStringCompleted += (a,b) => Console.WriteLine("Done"); 
}); 
+1

Sí, se tomará del grupo de subprocesos, arriesgándose al agotamiento. ¿Cuál es el punto de la doble asincronización en este escenario particular? – bzlm

+1

¿Quiere decir que quiere [realizar varias tareas mientras está realizando múltiples tareas?] (Http://encyclopediadramatica.com/Sup_Dawg) –

+0

Gracias por la respuesta rápida. Mi implementación actual usa una clase de utilidad que construí, que ya dispara un webreqeust asincrónico, y ahora estoy presentando un ThreadPool para administrar los eventos táctiles, y me acabo de dar cuenta de que voy a hacer una doble asincronía. Quiero entender los problemas a largo plazo con los que me puedo encontrar. El agotamiento parece ser el más obvio. –

Respuesta

0

Si estás terminando su devolución de llamada justo después de subprocesos, como HAS muestra allí, no deberan estar en un problema. Usted está reemplazando una línea de tiempo de llamada de subproceso con otra.

Cuestiones relacionadas