在C#中的Asp.Net应用程序中使用ExecuteStoreQueryAsync

问题描述 投票:-1回答:1

我有一个Asp.Net Web表单应用程序,在我的页面的Page_Load event中,我有以下代码

protected async void Page_Load(object sender, EventArgs e)
  {
     var data = await ChartDataHelper.GetBidsAverageCycle("2018", "Q4",              
                "Fiscal");
      SomeSyncOperation();
  }

这是主要方法

public static async Task<List<BidAveragceCycleModel>> GetBidsAverageCycle(string year, string quarter, string yearType)
        {
            SqlParameter parameter1 = new SqlParameter("@RequestData", BuildMonthsFilter(year, quarter, yearType));
            var data =await Entities.Current.ExecuteStoreQueryAsync<BidAveragceCycleModel>("exec Dashboard_Bids_AverageCycleTime @RequestData"
                 , new[] { parameter1 });
            return data.ToList();
        }

我在考虑使用await on the ExecuteStoreQueryAsync will return the control back to Page_Load and call SomeSyncOperation(),但看起来它在synchronous fashion中运行,10秒后Stored Proc返回数据然后调用data.ToList()然后只返回Page_Load调用。

有人可以告诉我这里我做错了什么。

谢谢

c# asp.net .net async-await entity-framework-6
1个回答
0
投票

在Stored Proc返回数据10秒后,它会调用data.ToList()然后只返回到Page_Load调用。

这就是async / await的工作原理。

如果你想在加载Page_Load之前完成data,那么你可以做的是存储一个Task<List<BidAveragceCycleModel>>并让Page_Load分配该任务变量(没有awaiting它)。然后,当需要该数据时,代码可以awaitTask<T>

© www.soinside.com 2019 - 2024. All rights reserved.