Async ждут, как использовать возвращаемые значения
У меня есть служба Windows, которую я унаследовал от другого разработчика, она работает очень медленно и имеет многочисленные медленные вызовы API eBay. Я хочу ускорить его без особого рефакторинга.
Я только начал смотреть на использование c # async / await, чтобы попытаться заставить некоторые из этих медленных вызовов запускать async. Вот что я пытаюсь достичь:
У меня есть 1 очень занятый метод, который делает много звонков, как показано ниже:
getProducts
getCategories
getVehicles
getImages
Я думал, что могу просто поменять методы наasync
и добавитьTask<T>
к типу возврата, как показано ниже:
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;
}
Затем позвоните им с ожиданием:
Task<String> additionalProductDetials = ebayPartNumbers.ProcessAdditionalProductDetialsAsync(item);
Task<PartNumberCollection> partNumberCollection = ebayPartNumbers.ProcessPartNumbersAsync(item);
await Task.WhenAll(partNumberCollection, additionalProductDetials);
Как мне получить возвращенные типы, чтобы я мог их использовать? Я пробовал просто используяpartNumberCollection
но он имеет толькоawait
свойства доступны.