Wpis z mikrobloga

Mam pytanie odnośnie async/await.
Wydaje mi się że w miarę dobrze rozumiem jak to powinno działać
Czy jest sens używać tego w aplikacjach konsolowych?
W formsach na pewno bo chodzi o to żeby nie blokować interfejsu
W console jeśli mam 2 rzeczy na raz do zrobienia to robię osobne Thready albo Taski, ale wydaje mi się że nie ma tu korzyści z async await a nawet jak użyje to i tak trzeba wołać Wait albo Result Bo inaczej metoda "ginie" przed zakończeniem
#csharp
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@obieq: Jeśli wołasz Wait albo Result, to call nie jest nawet asynchroniczny.

Bo inaczej metoda "ginie" przed zakończeniem


To brzmi, jakbyś nie obserwował w żaden sposób stanu wykonywanych tasków, tylko robił "odpal i zapomnij". Czy awaitujesz te asynchroniczne wywołania? Metoda Main() jest asynchroniczna, w sensie zwraca Taska?
  • Odpowiedz
@Czesiowcy: tak wiem że to rozwala asynchronicznosc. Może źle to robię ale jeśli zrobię async i z awaituje to i tak leci dalej... Chyba że zdarzy się skończyć zanim skończy się metoda w której jest wołany. (Jak patrzyłem debugiem)
  • Odpowiedz
@obieq: Użycie async/await powoduje, że w moemencie dojaścia wątku do pierwszego await zostaje on zwolniony i może wykonywać inne zadania, w Twoim wypadku optymalne by było swtorzyć dwa Taski i uzyć await Task.WhenAll
  • Odpowiedz
@obieq: Tak jest sens, użycie Parallel zablokuje Ci bierzący wątek do momonetu ukończenia wszystkich operacji w tym czasie mógłby być wykorzystany gdzie indziej. Możesz połączyć Parallel z async/await uruchamiając nowe zadania które wywoła Parralel, a następnie czakając na to zadanie
  • Odpowiedz