2010-03-18 21 views
5

Ho un'applicazione Silverlight in cui ho più richieste che vanno al server. Voglio che tutte queste richieste siano sincronizzate, cioè tramite la coda o tramite multitasking. Qual è la media migliore di fare così.Plz fornire qualche esempio in silverlight dove io potrei farlo.Multitasking e Multithreading in silverlight

risposta

0

Date un'occhiata al ASYNC CTP quadro: http://msdn.microsoft.com/en-us/vstudio/gg316360

Offre semplici modi per gestire/sincronizzare le richieste asincrone, come il seguente esempio:

public async void AsyncWebRequestGetResponse() 
{ 
    var response = await WebRequest.Create("http://www.weather.gov").GetResponseAsync(); 
    var stream = response.GetResponseStream(); 
    Console.WriteLine("First byte: {0}", stream.ReadByte().ToString("X2")); 
} 

o

public async void AsyncForEach() 
{ 
    var uris = new List<Uri> { new Uri("http://www.weather.gov"), new Uri("http://www.weather.gov/climate/"), new Uri("http://www.weather.gov/rss/") }; 

    foreach (var uri in uris) 
    { 
     WriteLinePageTitle(await new WebClient().DownloadStringTaskAsync(uri)); 
    } 
} 

Il modo classico è utilizzare WaitHandles come AutoResetEvent per sincronizzare le richieste.

0

Le estensioni reattive potrebbero anche essere un'opzione valida. Questo è un buon article che mostra di usarlo per chiamate asincrone a un servizio WCF.

0

Il punto è che non è possibile controllare l'ordine della richiesta e, per impostazione predefinita, è possibile effettuare solo due richieste allo stesso dominio, quindi significa che è necessario creare qualcosa sul client per inviare richieste nell'ordine in cui vuoi essere eseguito, e ovviamente Silverlight supporta solo BasicHttpBinding significa che non hai la proprietà del messaggio ordinato.