У меня есть служба Windows, которую я унаследовал от другого разработчика, она работает очень медленно и имеет множество медленных вызовов API eBay. Я хочу ускорить его, не слишком много рефакторинга.
Я только начал смотреть на использование С# async/await, чтобы попытаться получить некоторые из этих медленных вызовов для запуска async. Вот чего я пытаюсь достичь:
У меня есть один очень загруженный метод, который вызывает множество вызовов, как показано ниже:
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
.