Sto scrivendo una libreria che avvolge una chiamata di servizio Web di terze parti e sto cercando di fare in modo che la libreria utilizzi le nuove funzionalità asincrone/attese. Qual è l'uso corretto delle parole chiave asincrone/attese nel seguente esempio?Nesting async/await methods
public class MyApi
{
public Task<ApiResult> DoSomethingAsync()
{
return this.DoSomethingCore();
}
public async Task<ApiResult> DoSomethingElseAsync()
{
return await this.DoSomethingCore();
}
private async Task<ApiResult> DoSomethingCore()
{
var httpClient = new HttpClient();
var httpResponseMessage = await httpClient.GetAsync("some url");
var rawResultText = await httpResponseMessage.Content.ReadAsStringAsync();
return new ApiResult(rawResultText);
}
}
Per consentire il mio interlocutore di attendere il metodo DoSomethingAsync, dovrebbe quel metodo hanno anche l'asincrono e attendono le parole chiave aggiunto ad esso? O va bene così com'è perché restituisce un compito? C'è un modello migliore per questo tipo di nidificazione?
Penso che il metodo DoSomethingAsync sia il modo corretto di andare qui, è corretto? Credo che DoSomethingElseAsync sembri l'approccio sbagliato quando si costruisce una libreria.
C# 5.0 non esiste, la versione successiva è 4.5, vuoi dire questo? –
@Ramhound - Il prossimo CLR è 4.5, la lingua successiva è C# 5 –