Che cos'è ConfigureAwait?
Che cos'è ConfigureAwait?

Video: Che cos'è ConfigureAwait?

Video: Che cos'è ConfigureAwait?
Video: Parte 7: ConfigureAwait - SynchronizationContext - Task / Async / Await in Net Core con C# (C Sharp) 2024, Novembre
Anonim

ConfiguraAttendi (falso) comporta un'attività che è già stata completata nel momento in cui è attesa (che in realtà è incredibilmente comune), quindi il ConfiguraAttendi (false) sarà privo di significato, poiché il thread continua a eseguire il codice nel metodo dopo questo e ancora nello stesso contesto che era presente in precedenza.

Successivamente, ci si potrebbe anche chiedere, qual è l'uso di ConfigureAwait false?

ConfiguraAttendi ( falso ) configura l'attività in modo che la continuazione dopo l'attesa non debba essere eseguita nel contesto del chiamante, evitando così eventuali deadlock.

Oltre a sopra, cos'è SynchronizationContext? SincronizzazioneContesto è una rappresentazione dell'ambiente corrente in cui è in esecuzione il nostro codice. Cioè, in un programma asincrono, quando deleghiamo un'unità di lavoro a un altro thread, acquisiamo l'ambiente corrente e lo memorizziamo in un'istanza di SincronizzazioneContesto e posizionarlo sull'oggetto Task.

Tenendo questo in considerazione, qual è l'uso di ConfigureAwait?

Usando ConfiguraAttendi (falso) evitare situazioni di stallo è una pratica pericolosa. dovresti usa ConfiguraAttendi (falso) per ogni attesa nella chiusura transitiva di tutti i metodi chiamati dal codice di blocco, inclusi tutti i codici di terza e seconda parte. Usando ConfiguraAttendi (falso) per evitare lo stallo è nella migliore delle ipotesi solo un hack).

Cos'è GetAwaiter?

GetAwaiter (), che restituisce un'istanza che ha un metodo GetResult(). Quando viene utilizzato su un'attività con errori, GetResult() propagherà l'eccezione originale (questo è il modo in cui " wait task; " ottiene il suo comportamento). GetResult() perché conserva le eccezioni dell'attività invece di racchiuderle in un AggregateException.

Consigliato: