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
Tarun, ho trovato questo articolo molto utile.
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.
Le estensioni reattive potrebbero anche essere un'opzione valida. Questo è un buon article che mostra di usarlo per chiamate asincrone a un servizio WCF.
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.