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>&nbsp;" + 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.

Respuestas a la pregunta(4)

Su respuesta a la pregunta