Supponiamo che io sono il codice che assomiglia a questo:Come idratare un dizionario con i risultati delle chiamate asincrone?
public async Task<string> DoSomethingReturnString(int n) { ... }
int[] numbers = new int[] { 1, 2 , 3};
Supponiamo che io voglia creare un dizionario che contiene il risultato della chiamata DoSomethingReturnString
per ogni numero simile a questo:
Dictionary<int, string> dictionary = numbers.ToDictionary(n => n,
n => DoSomethingReturnString(n));
che ha vinto' funziona perché DoSomethingReturnString restituisce Task<string>
anziché string
. L'intellisense mi ha suggerito di provare a specificare la mia espressione lambda come asincrona, ma anche questo non sembra aver risolto il problema.
'DoSomethingReturnString (n) .Result', ma poi si sta bloccando. Se non è quello che stai per, allora avresti bisogno di una funzione asincrona che restituisca un 'Compito' –
Questo è un ottimo esempio del perché "async fino in fondo" è un principio guida quando si lavora con codice asincrono. –
Anche il codice di consumo è asincrono? –