Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.Net应用程序中使用Task.WhenAny()对性能的影响_C#_Asp.net_Garbage Collection_Async Await - Fatal编程技术网

C# 在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

在ASP.Net应用程序中使用Task.WhenAny()是否被视为不好的做法?如果我有一个方法,它获取股票报价并调用多个服务来获取价格,但我返回了返回的第一个结果,那么如果在应用程序中经常这样做,会有什么影响

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应用程序是否会因两个未等待的任务而受到影响

  • 调用此方法的web请求完成
  • 在web应用程序中调用垃圾收集

  • 有没有更好的方法来处理这种情况?当未观察到的任务出现故障时,与长时间运行相比,是否存在差异?

    您应该取消剩余的任务,因为它们将运行到完成,但将被忽略(例外情况也是如此)。 在第一个返回之后,考虑使用<代码>取消EngultToC/<代码>取消剩余的任务。