2010-03-18 4 views
5

У меня есть приложение silverlight, в котором у меня есть несколько запросов, которые идут на сервер. Я хочу, чтобы все эти запросы были синхронизированы, то есть с помощью очереди или с помощью многозадачности. Что является лучшим средним от этого. Plz предоставляет некоторый пример в silverlight, где io может это сделать.Многозадачность и многопоточность в silverlight

ответ

0

Взгляните на Асинхронный CTP Framework: http://msdn.microsoft.com/en-us/vstudio/gg316360

Он предлагает простые способы обработки/синхронизации запросов асинхронное, как в следующем примере:

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")); 
} 

или

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)); 
    } 
} 

Классический способ - использовать WaitHandles, например AutoResetEvent, для синхронизации запросов.

0

Реактивные расширения также могут быть допустимым вариантом. Это хороший article, который показывает его использование для асинхронных вызовов в службу WCF.

0

Дело в том, что вы не можете контролировать порядок запроса, и по умолчанию вы можете сделать только два запроса в одном домене, поэтому это означает, что вам нужно что-то создать на клиенте для отправки запросов в том порядке, в котором вы хотите выполнить, и, конечно же, Silverlight поддерживает только BasicHttpBinding, значит, у вас нет заказанного свойства сообщения.

Смежные вопросы