Async espera cómo usar valores de retorno
Tengo un servicio de Windows que heredé de otro desarrollador, funciona muy lento y tiene numerosas llamadas lentas a la API de eBay. Deseo acelerarlo sin demasiada refactorización.
Acabo de comenzar a mirar el uso de c # async / await para intentar obtener algunas de estas llamadas lentas para ejecutar async. Esto es lo que estoy tratando de lograr:
Tengo un método 1 muy ocupado que hace muchas llamadas de la siguiente manera:
getProducts
getCategories
getVehicles
getImages
Pensé que podía simplemente cambiar los métodos aasync
y añadirTask<T>
al tipo de retorno como se muestra a continuación:
public async Task<String> ProcessAdditionalProductDetialsAsync(ItemType oItem)
{
String additionalProductDetails = string.Empty;
if (oItem.ItemSpecifics.Count > 0)
{
foreach (NameValueListType nvl in oItem.ItemSpecifics)
{
if (nvl.Value.Count > 0)
{
foreach (string s in nvl.Value)
{
additionalProductDetails += "<li><strong>" + nvl.Name + ":</strong> " + s + "</li>";
}
}
}
}
return additionalProductDetails;
}
Entonces llámalos con aguarda:
Task<String> additionalProductDetials = ebayPartNumbers.ProcessAdditionalProductDetialsAsync(item);
Task<PartNumberCollection> partNumberCollection = ebayPartNumbers.ProcessPartNumbersAsync(item);
await Task.WhenAll(partNumberCollection, additionalProductDetials);
¿Cómo obtengo los tipos devueltos para poder usarlos? He intentado simplemente usarpartNumberCollection
pero solo tiene elawait
propiedades disponibles.