wywołanie synchroniczne 2 metod asynchronicznych

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.

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
}
0

Szukaj pod hasłem: C# await

0

Ok, ale

await Metoda1()

wymaga, return typu Task :/

0

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

Metoda1();
while( !Flaga ) System.Threading.Thread.Sleep(500); //czekaj 500ms i znowu sprawdź.
Metoda2();
0
pawlo 89 napisał(a):

Ok, ale

await Metoda1()

wymaga, return typu Task :/

I co to za problem?

0

Kolega napisal ze nie moze modyfikowac metod asynchronicznych

0

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

0

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

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