Jak uruchomić zadania równoległe na Windows Phone?
Buduję aplikację WP8 i muszę wykonać około 30 żądań internetowych. Żądania te nie zależą od siebie, więc mogą być równoległe.
Mój kod wygląda następująco (uproszczony / pseudokod):
foreach (Uri uri in uris)
{
var rawData = await Task.Run(() => httpClient.GetStringAsync(uri).ConfigureAwait(false));
var processedData = dataProcessor.Process(rawData);
processedDataCollection.Add(processedData);
}
Kiedy patrzę na Skrzypka, wszystkie prośby są wykonywane sekwencyjnie; wykonanie i przetworzenie wszystkich zajmuje kilka sekund. Nie chcę jednak, aby kod czekał na zakończenie 1 żądania przed przejściem do następnego, chcę jednocześnie wykonać wiele żądań.
Normalnie używałbymParallel.Invoke()
lubParallel.ForEach()
lub coś takiego, ale najwyraźniej biblioteka równoległa nie jest dostępna w Windows Phone 8.
Więc jaki jest najlepszy sposób, aby to osiągnąć?Task.Factory.StartNew()
? new Thread()
?