2011-02-08 29 views
5

Ho un'applicazione MonoTouch che utilizza un ThreadPool per gestire il numero di thread in background. Se ho spawnato ThreadPool da un thread e all'interno del thread, viene lanciata una richiesta web Async, la richiesta web verrà generata da un secondo thread? in caso affermativo, questo thread verrà rimosso dal ThreadPool?ThreadPool.QueueUserWorkItem con chiamata asincrona all'interno della discussione

Qual è la migliore pratica per una cosa del genere? Se la richiesta web è solo una chiamata sincrona, per ridurre il numero di thread corrente?

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

Sì, verrà prelevato dal pool di thread, rischiando esaurimento. Qual è il punto del doppio asincrono in questo particolare scenario? – bzlm

+1

Vuoi dire che vuoi [multitasking mentre sei multitasking?] (Http://encyclopediadramatica.com/Sup_Dawg) –

+0

Grazie per la rapida risposta. La mia attuale implementazione utilizza una classe di utilità che ho creato e che attiva già un webreqeust asincrono, e ora sto introducendo un ThreadPool per gestire gli eventi touch e ho appena realizzato che farò un doppio asincrono. Voglio capire i problemi a lungo termine che potrei incontrare. L'esaurimento sembra essere il più ovvio. –

risposta

0

Se tu sei terminare la richiamata threadpool subito dopo, come youve mostrato lì, ci shouldn essere un problema. Stai solo sostituendo una timeline di chiamata threadpool con un'altra.

Problemi correlati