Hvad er ConfigureAwait?
Hvad er ConfigureAwait?

Video: Hvad er ConfigureAwait?

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

ConfigureAwait (falsk) involverer en opgave, der allerede er afsluttet på det tidspunkt, den ventes (hvilket faktisk er utroligt almindeligt), så ConfigureAwait (false) vil være meningsløst, da tråden fortsætter med at eksekvere kode i metoden efter dette og stadig i samme kontekst, som var der tidligere.

Efterfølgende kan man også spørge, hvad er brugen af ConfigureAwait falsk?

ConfigureAwait ( falsk ) konfigurerer opgaven, så fortsættelse efter ventetiden ikke skal køres i opkaldskonteksten, og undgår derfor eventuelle deadlocks.

Udover ovenstående, hvad er SynchronizationContext? Synkroniseringskontekst er en repræsentation af det aktuelle miljø, som vores kode kører i. Det vil sige, at i et asynkront program, når vi uddelegerer en arbejdsenhed til en anden tråd, fanger vi det aktuelle miljø og gemmer det i en instans af Synkroniseringskontekst og placer den på opgaveobjektet.

Når man tager dette i betragtning, hvad er brugen af ConfigureAwait?

Ved brug af ConfigureAwait (falsk) at undgå dødvande er en farlig praksis. Det skulle du brug ConfigureAwait (falsk) for hver afventning i den transitive lukning af alle metoder, der kaldes af blokeringskoden, inklusive alle tredjeparts- og andenpartskoder. Ved brug af ConfigureAwait (falsk) for at undgå dødvande er i bedste fald bare et hack).

Hvad er GetAwaiter?

GetAwaiter () metode, som returnerer en instans, der har en GetResult() metode. Når det bruges på en fejlbehæftet opgave, vil GetResult() udbrede den oprindelige undtagelse (dette er hvordan " afvent opgave; " får sin adfærd). GetResult() fordi den bevarer opgaveundtagelserne i stedet for at pakke dem ind i en AggregateException.

Anbefalede: