Chwilowe "wyjście" z pętli While do nowego wątku.

0

Witam,
Mam następujący problem.
W pętli While sprawdzane są pewne dane, jeżeli czegoś w tych danych brakuje to chciałbym uruchomić dodatkowy wątek pobierający plik, a po pobraniu kolejne zadania w pętli są kontynuowane.
Kluczowe jest tu pobieranie. Jeżeli użyje zwykłego synchronicznego pobierania to While jest wstrzymane do momentu zakończenia pobierania, ale gdy chcę użyć metody asynchronicznej, to While kontynuuje działania bez czekania na zakończenie pobrania.
Jak rozwiązać ten problem?

Dzięki za każdą pomoc.

0

Rozwijam opis zadania.
Program ma za zadanie magazynować wyniki sportowe z każdego dnia. Powiedzmy, że mam już jakąś bazę z danymi.
Na początku sprawdzam datę ostatniego pobrania w bazie i jeśli było to np. 10 dni temu, to do ostatniej daty dodajemy kolejne dni i pobieramy, przetwarzamy otrzymane dane. Całe to zadanie wykonuje właśnie pętla While ("OstatniaData"+i).
Niestety może się zdarzyć, że na serwerze nie ma pliku z pojedynczego dnia, ale jest skompresowany cały miesiąc pojedynczych dni. Ze względu na to, że plik ten jest sporej wielkości chciałbym użyć pobierania asynchronicznego, wypakować konkretny dzień, dopisać do istniejącej bazy.
W pętli umieszczam uruchomienie pobierania dużego pliku .zip i tu pojawia się problem ponieważ pętla dalej próbuje robić swoje, a chciałbym, aby poczekała, aż plik pobierze się.

Dodam jeszcze, że takich grup do pobrania/dopisania jest kilka np. Grupa1 - pobierz braki, dopisz brakujące dane, Grupa2 - pobierz braki, dopisz brakujące dane itd.

0

W pętli obrabiasz tylko te dane które są, a jeśli pliku brakuje, robisz WebClient.DownloadFileAsync i w callbacku przetwarzasz to co się ściągnęło (poza pętlą).
Jeśli możesz sobie pozwolić na .DownloadFileTaskAsync to jeszcze lepiej, bo można zachować pozory pętli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1