Hva er ConfigureAwait?
Hva er ConfigureAwait?

Video: Hva er ConfigureAwait?

Video: Hva er ConfigureAwait?
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Kan
Anonim

ConfigureAwait (false) involverer en oppgave som allerede er fullført når den er ventet (noe som faktisk er utrolig vanlig), så ConfigureAwait (false) vil være meningsløst, da tråden fortsetter å kjøre kode i metoden etter dette og fortsatt i samme kontekst som var der tidligere.

Deretter kan man også spørre, hva er bruken av ConfigureAwait false?

ConfigureAwait ( falsk ) konfigurerer oppgaven slik at fortsettelse etter ventetiden ikke trenger å kjøres i oppringerkonteksten, og unngår derfor eventuelle vranglåser.

Foruten ovenfor, hva er SynchronizationContext? SynchronizationContext er en representasjon av det gjeldende miljøet som koden vår kjører i. Det vil si at i et asynkront program, når vi delegerer en arbeidsenhet til en annen tråd, fanger vi opp det gjeldende miljøet og lagrer det i en instans av SynchronizationContext og plasser den på Task-objektet.

Med tanke på dette, hva er bruken av ConfigureAwait?

Ved hjelp av ConfigureAwait (false) å unngå vranglås er en farlig praksis. Du måtte bruk ConfigureAwait (false) for hver venting i transitiv lukking av alle metoder kalt av blokkeringskoden, inkludert alle tredjeparts- og andrepartskoder. Ved hjelp av ConfigureAwait (false) for å unngå dødlås er i beste fall bare et hack).

Hva er GetAwaiter?

GetAwaiter ()-metoden, som returnerer en forekomst som har en GetResult()-metode. Når den brukes på en feilaktig oppgave, vil GetResult() forplante det opprinnelige unntaket (dette er hvordan " vent task; " får sin oppførsel). GetResult() fordi den bevarer oppgaveunntakene i stedet for å pakke dem inn i en AggregateException.

Anbefalt: