小编Cap*_*nRG的帖子

使用ADO.NET异步调用Oracle DB

我正在尝试使用异步和等待.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)

c# asp.net ado.net webforms async-await

0
推荐指数
1
解决办法
1409
查看次数

标签 统计

ado.net ×1

asp.net ×1

async-await ×1

c# ×1

webforms ×1