wywołanie synchroniczne 2 metod asynchronicznych

wywołanie synchroniczne 2 metod asynchronicznych
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam.

Mam problem z wykonaniem kodu o schemacie jak niżej. Mam 2 metody asynchroniczne zwracające void. Nie mogę ich modyfikować. Wywołują one kolejne metody zwracające Task. Czy istnieje możliwość zaczekania na wykonanie 1 metody i metod asynchronicznych w jej wnętrzu i dopiero potem wywołanie Metody2? Próbowałem wykorzystywać Wait() - nie działa. Próbowałem tworzyć Task i w jego ciele wywoływać Metode1 i await - nie działa. Niestety to moje pierwsze kroki w asynchroniczności, więc będę wdzięczny za pomoc. .NET 4.5.

Kopiuj
public void MetodaGlowna()
{
    Metoda1();
      //zaczekaj na wykonanie metody Metoda1 i metody asynchronicznej w jej wnętrzu
    Metoda2();
}

 public async void Metoda1
{
  //wykonanie synchronicznej metody
 //wykonanie asynchrronicznej metody 
 //wykonanie synchronicznej metody
}

 public async void Metoda2
{
  //wykonanie synchronicznej metody
//wykonanie asynchrronicznej metody
//wykonanie synchronicznej metody
}
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
0

Szukaj pod hasłem: C# await

  • Rejestracja: dni
  • Ostatnio: dni
0

Ok, ale

Kopiuj
await Metoda1()

wymaga, return typu Task :/

Ola Nordmann
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 414
0

Dodaj jakąś flagę globalną, którą metoda asynchroniczna będzie ustawiała na true. Wtedy zrobisz coś takiego:

Kopiuj
Metoda1();
while( !Flaga ) System.Threading.Thread.Sleep(500); //czekaj 500ms i znowu sprawdź.
Metoda2();
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2518
0
pawlo 89 napisał(a):

Ok, ale

Kopiuj
await Metoda1()

wymaga, return typu Task :/

I co to za problem?

  • Rejestracja: dni
  • Ostatnio: dni
0

Kolega napisal ze nie moze modyfikowac metod asynchronicznych

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

Metody asynchroniczne zwracające void są „odpal i zapomnij”, nie można na nie czekać.

  • Rejestracja: dni
  • Ostatnio: dni
0

Szkoda ... dziękuję za odpowiedź.

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.