我正在尝试使用异步和等待.NET Framework 4.5中提供的功能执行多个数据库调用.这是我第一次实现此功能.
如果每个查询花费7秒,则过去需要35秒(5个查询*7秒).通过以下实现,我期待它应该在接近7-9秒的时间内在asp页面中获取和填充控件.但是,它仍然需要35秒,证明了我的同步行为.
有人可以帮助我在下面的异步实现中出错.
我对任何投入表示赞赏,因为几天以来我一直在为此而烦恼
protected void Page_Load(object sender, System.EventArgs e)
{
RegisterAsyncTask(new PageAsyncTask(FillControlsAsync));
}
public async Task FillControlsAsync()
{
Task[] tasks = new Task[]{
PopulateControlTask(query1, "controlID1"),
PopulateControlTask(query2, "controlID2"),
PopulateControlTask(query3, "controlID3"),
PopulateControlTask(query4, "controlID4"),
PopulateControlTask(query5, "controlID5")
});
await Task.WhenAll(tasks);
}
public async Task PopulateControlTask(string query, string control)
{
await Task.Run(() =>
{
DataSet ds;
OracleCommand cmd;
OracleDataAdapter da;
try
{
if (!Page.IsPostBack)
{
cmd = new OracleCommand(query, cn);
da = new OracleDataAdapter(cmd);
ds = new DataSet();
da.Fill(ds);
switch (control)
{ …Run Code Online (Sandbox Code Playgroud)