Follow-up a this question. Ho una libreria con molti metodi asincroni che avvolgono sottilmente HttpClient
. Effettivamente hanno solo fare un po 'di installazione e tornare direttamente il Task
restituita dalla chiamata HttpClient
:È vantaggioso utilizzare ConfigureAwait (false) in una libreria che restituisce direttamente un'attività da una chiamata a un'altra libreria?
public Task DoThingAsyc() {
// do some setup
return httpClient.DoThingAsync();
}
sto meditando se aggiungere ConfigureAwait(false)
a queste chiamate. La saggezza prevalente sembra essere "sì, fallo sempre nelle biblioteche". Ma in questo caso, introdurrebbe un overhead (forse trascurabile), perché ConfigureAwait
restituisce uno ConfiguredTaskAwaitable
che dovrebbe essere ricollocato in un Task
per non modificare la firma del metodo. Certamente non è difficile codice:
public async Task DoThingAsyc() {
// do some setup
return await httpClient.DoThingAsync().ConfigureAwait(false);
}
La mia domanda è, sarà i benefici di efficienza di ConfigureAwait(false)
probabile superare il sovraccarico introdotto in questo caso? Quale esempio sopra sarebbe considerato la pratica migliore?
Questo è il caso - * he * attende su 'ConfigureAwait' all'interno della libreria. – GSerg
@GSerg Espanderò la mia risposta –
Grazie! Penso che queste siano ugualmente buone risposte, ma devo darlo al ragazzo che ha suonato per primo. –