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);
                    }
                }
            }
  • 相关阅读:
    《乘法运算定律》
    pytest(三十九)--内置request读取项目的根目录 rootdir
    《乘除法意义及各部分关系》
    《比例尺》
    《百分数》
    《8的乘法口诀》
    《1升有多少》
    ant-design-vue 上传图片组件
    ant-design-vue快速搭建
    js实现无缝滚动
  • 原文地址:https://www.cnblogs.com/refactor/p/2521458.html
Copyright © 2011-2022 走看看