【发布时间】:2018-06-16 08:50:30
【问题描述】:
在 ASP.Net 应用程序中使用 Task.WhenAny() 是否被视为不好的做法?如果我有一个方法可以获取 stockQuote 并调用多个服务以获取某个价格,但我返回了我得到的第一个结果,如果在应用程序中经常这样做会产生什么影响?
public async Task<decimal> GetStockQuote(string stockSymbol)
{
var task1 = PriceFromServiceOne(stockSymbol); // Returns first
var task2 = PriceFromServiceTwo(stockSymbol); // Contains exception
var task3 = PriceFromServiceThree(stockSymbol); // Take 5 mins to return
// What happens to the other two tasks?
var priceTask = await Task.WhenAny(task1, task2, task3);
decimal price = await priceTask;
return price;
}
两个未等待的任务是否会对 Web 应用程序产生影响
- 调用此方法的网络请求完成
- 在 Web 应用程序中调用垃圾收集
是否有更好的方法来处理这种情况?与长时间运行相比,未观察到的任务出现故障时是否存在差异?
【问题讨论】:
标签: c# asp.net garbage-collection async-await