Async warten, wie Rückgabewerte verwendet werden

Ich habe einen Windows-Dienst, den ich von einem anderen Entwickler geerbt habe. Er läuft sehr langsam und hat zahlreiche langsame Aufrufe an die eBay-API. Ich möchte es beschleunigen, ohne zu viel umgestalten zu müssen.

Ich habe gerade angefangen, C # async / await zu verwenden, um zu versuchen, einige dieser langsamen Aufrufe zum Ausführen von async zu bewegen. Folgendes versuche ich zu erreichen:

Ich habe eine 1 sehr beschäftigt Methode, die viele Anrufe wie folgt macht:

getProducts
getCategories
getVehicles
getImages

Meine Gedanken waren, dass ich einfach die Methoden auf @ ändern könnasync und @ hinzufügTask<T> zum Rückgabetyp wie folgt:

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;
}

Rufen Sie sie dann mit wait auf:

Task<String> additionalProductDetials = ebayPartNumbers.ProcessAdditionalProductDetialsAsync(item);
Task<PartNumberCollection> partNumberCollection = ebayPartNumbers.ProcessPartNumbersAsync(item); 


await Task.WhenAll(partNumberCollection, additionalProductDetials);

Wie erhalte ich die zurückgegebenen Typen, damit ich sie verwenden kann? Ich habe versucht, nur mitpartNumberCollection aber es hat nur dieawait Eigenschaften verfügbar.