Metoda asynchoniczna bez await

Metoda asynchoniczna bez await
M9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Chciałbym utworzyć metodę która wygląda mniej więcej w ten sposób:

Kopiuj
public async Task SetupResourcesAsync(...)
{
            {...}
            List<Task> tasks = new List<Task>();

            tasks.Add(Task.Run(() =>
            {
                  {...}
            }));

            Task.WaitAll(tasks.ToArray());
}

Problem polega na tym iż korzystam z zewnętrznej biblioteki (odpowiedzialna za IO) która nie mam możliwości wykonania pewnych operacji asynchronicznie. W związku z tym nie mogę użyć await.

Tuta:j https://stackoverflow.com/a/17805992/6751581 niby jest ok, ale nie zwraca Taska i ani nie czeka na jego zakończenie, a ja potrzebuje utworzyć ich kilka(naście) i zaczekać na ich zakończenie.

Nie mogę użyć ThreadPoola bo WPF mi na to nie pozwala, macie jakieś pomysły jak to ugryźć?
Jedyne czego potrzebuje to nie "zwiesić" UI.

neves
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1114
1

Zamiast WaitAll użyj WhenAll który zwraca Taska na którym mozesz zrobić await :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.