C# 在ASP.Net应用程序中使用Task.WhenAny()对性能的影响
在ASP.Net应用程序中使用Task.WhenAny()是否被视为不好的做法?如果我有一个方法,它获取股票报价并调用多个服务来获取价格,但我返回了返回的第一个结果,那么如果在应用程序中经常这样做,会有什么影响C# 在ASP.Net应用程序中使用Task.WhenAny()对性能的影响,c#,asp.net,garbage-collection,async-await,C#,Asp.net,Garbage Collection,Async Await,在ASP.Net应用程序中使用Task.WhenAny()是否被视为不好的做法?如果我有一个方法,它获取股票报价并调用多个服务来获取价格,但我返回了返回的第一个结果,那么如果在应用程序中经常这样做,会有什么影响 public async Task<decimal> GetStockQuote(string stockSymbol) { var task1 = PriceFromServiceOne(stockSymbol); // Returns first v
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;
}
公共异步任务GetStockQuote(字符串stockSymbol)
{
var task1=PriceFromServiceOne(stockSymbol);//首先返回
var task2=PriceFromServiceTwo(stockSymbol);//包含异常
var task3=PriceFromServiceThree(stockSymbol);//返回需要5分钟
//其他两项任务会发生什么情况?
var priceTask=wait Task.WhenAny(task1、task2、task3);
十进制价格=等待价格任务;
退货价格;
}
当出现以下情况时,web应用程序是否会因两个未等待的任务而受到影响
有没有更好的方法来处理这种情况?当未观察到的任务出现故障时,与长时间运行相比,是否存在差异?您应该取消剩余的任务,因为它们将运行到完成,但将被忽略(例外情况也是如此)。 在第一个返回之后,考虑使用<代码>取消EngultToC/<代码>取消剩余的任务。