Я создаю приложение WP8, и мне нужно выполнить около 30 веб-запросов. Эти запросы не зависят друг от друга, поэтому они могут быть распараллелены.Как выполнять параллельные задачи на Windows Phone?
Мой код выглядит следующим образом (упрощенный/псевдокод):
foreach (Uri uri in uris)
{
var rawData = await Task.Run(() => httpClient.GetStringAsync(uri).ConfigureAwait(false));
var processedData = dataProcessor.Process(rawData);
processedDataCollection.Add(processedData);
}
Когда я смотрю на скрипача, запросы выполняются все sequantial; для выполнения и обработки всех них требуется несколько секунд. Тем не менее, я не хочу, чтобы код дождался, пока 1 запрос не будет закончен, прежде чем перейти к следующему, я хочу выполнить несколько запросов одновременно.
Обычно я хотел бы использовать Parallel.Invoke()
или Parallel.ForEach()
или что-то подобное, чтобы сделать это, но, видимо, параллельная библиотека не доступна в Windows Phone 8.
Так что самый лучший способ для достижения этой цели? Task.Factory.StartNew()
? new Thread()
?
Мне очень нравится этот. Очень компактный и элегантный. Я не мог заставить его работать с другим кодом, но это работает отлично. Ваше сообщение было бы немного более полезным, если бы вы могли объяснить шаги и почему это действительно работает. –
Обновлено, чтобы включить больше объяснений. –