zoukankan      html  css  js  c++  java
  • 使用BeginExecuteReader异步加载数据

    1.使用SqlCommand.ExecuteReader()方法会造成窗体假死,所以用.net2.0新增的方法BeginExecuteReader

    代码如下:

            private delegate void DataGridViewHandler(DataTable dt);
    
            /// <summary>
            /// 此处开始加在数据
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button3_Click(object sender, EventArgs e)
            {
                SqlConnection conn =
                    new SqlConnection("Data Source=.;Initial Catalog=Test;User Id=sa;Password=*********;Async=true");
                conn.Open();
                SqlCommand cmd = new SqlCommand("Select top 700000 * from Test", conn) {CommandTimeout = 0};
                //此处开始查询数据,执行非常耗时的工作,ProcessData为执行完成后的委托
                cmd.BeginExecuteReader(ProcessData, cmd);
                //此处不会阻塞当前线程,label2 Text会马上执行
                label2.Text = "label2 Text会马上执行";
            }
    
            /// <summary>
            /// 查询完成后,执行的方法
            /// </summary>
            /// <param name="ar"></param>
            private void ProcessData(IAsyncResult ar)
            {
                SqlCommand cmd = (SqlCommand) ar.AsyncState;
                using (cmd.Connection)
                {
                    using (cmd)
                    {
                        SqlDataReader sdr = cmd.EndExecuteReader(ar);
                        DataTable dt = new DataTable("Product");
                        dt.Load(sdr);
    
                        //将查询的数据,赋给dataGridView1的DataSource
                        dataGridView1.BeginInvoke(
                            new DataGridViewHandler((dtResult) => dataGridView1.DataSource = dtResult), dt);
                    }
                }
            }
  • 相关阅读:
    【go语言】Windows下go语言beego框架安装
    分页
    MongoDB用户与权限管理
    MongoDB安装在Centos7下安装
    centos7安装mysql5.7.33 tar包方式
    文件路径分隔符
    python之批量打印网页为pdf文件
    Python驱动SAP GUI完成自动化(五)
    动态内存与智能指针
    关联容器
  • 原文地址:https://www.cnblogs.com/refactor/p/2521458.html
Copyright © 2011-2022 走看看