Co to jest ConfigureAwait?
Co to jest ConfigureAwait?

Wideo: Co to jest ConfigureAwait?

Wideo: Co to jest ConfigureAwait?
Wideo: Which do I use, ConfigureAwait True or False? 2024, Listopad
Anonim

KonfigurujPoczekaj (fałsz) dotyczy zadania, które zostało już ukończone w oczekiwanym czasie (co w rzeczywistości jest niezwykle powszechne), a następnie KonfigurujPoczekaj (false) będzie bez znaczenia, ponieważ wątek kontynuuje wykonywanie kodu w metodzie po tym i nadal w tym samym kontekście, który był wcześniej.

Następnie można również zapytać, jaki jest pożytek z ConfigureAwait false?

KonfigurujPoczekaj ( fałszywe ) konfiguruje zadanie tak, aby kontynuacja po await nie musiała być uruchamiana w kontekście wywołującego, dzięki czemu unika się wszelkich możliwych zakleszczeń.

Poza powyższym, czym jest SynchronizationContext? Kontekst synchronizacji jest reprezentacją bieżącego środowiska, w którym działa nasz kod. Oznacza to, że w programie asynchronicznym, gdy delegujemy jednostkę pracy do innego wątku, przechwytujemy bieżące środowisko i przechowujemy je w instancji Kontekst synchronizacji i umieść go na obiekcie Task.

Biorąc to pod uwagę, jaki jest pożytek z ConfigureAwait?

Za pomocą KonfigurujPoczekaj (fałsz), aby uniknąć impasu jest niebezpieczną praktyką. Powinieneś użyj KonfigurujPoczekaj (false) dla każdego oczekiwania w przechodnim zamknięciu wszystkich metod wywoływanych przez kod blokujący, w tym kod strony trzeciej i drugiej. Za pomocą KonfigurujPoczekaj (fałsz), aby uniknąć impasu jest w najlepszym razie tylko hackiem).

Co to jest GetAwaiter?

GetAwaiter () metoda, która zwraca instancję, która ma metodę GetResult(). W przypadku użycia w zadaniu, w którym wystąpił błąd, GetResult() będzie propagować oryginalny wyjątek (w ten sposób „await task;” uzyskuje swoje zachowanie). GetResult(), ponieważ zachowuje wyjątki zadań zamiast zawijać je w AggregateException.

Zalecana: