c#界面打开为了解决大数据量加载导致界面假死使用 BackgroundWorker 只是示例(不带进度条显示提示的)

我这里只是示例,具体原理可以参考下面网页

https://blog.csdn.net/wzj0808/article/details/78844667

我使用的场景是 主业务界面打开后,有N个基础数据表要加载,问题是如果等界面全部加载完毕需要较长时间,用户体验太差;

把一些大数量的可以放在页面的LOAD事件一开始就执行,等界面展示好后,用户实际开始操作的这段时间内后台悄悄的进行。

public partial class Form1 : Form
    {

       //声明

        private BackgroundWorker bgWorker = new BackgroundWorker();

       //比如这个要加载10万个项目

        private DataTable dtItem = null;
        public Form1()
        {
            InitializeComponent();

           //构造方法里设置属性

           bgWorker.WorkerReportsProgress = true;//报告完成进度  
            bgWorker.WorkerSupportsCancellation = true;//允许用户终止后台线程  
            bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork); //声明委托
        }

        private void Form1_Load(object sender, EventArgs e)
        {
             if (!bgWorker.IsBusy)//判断backgroundWorker1是否正在运行异步操作  
            {
                bgWorker.RunWorkerAsync(1000);//开始执行后台操作,调用DoWork事件  
            }

           //其他业务代码按主线程走

           。。。。。。。。。。。。。。。。。。
        }

        public void bgWorker_DoWork(object sender, DoWorkEventArgs e)
        {
             //这里是业务代码

             LoadItems(); 
        }

         private void LoadItems()

        {

                  //这里可以写比如访问数据库或配置文件读取了10万条基础数据

                 string connstr = ConfigurationManager.ConnectionStrings["FANXXConnectionString"].ToString();
 stirng strSQL= "SELECT * FROM  Items ";
//实例化链接并打开
SqlConnection  conn = new SqlConnection(connstr);

SqlDataAdapter da=new SqlDataAdapter(strSQL,conn);

DataSet ds=new DataSet();

da.Fill(ds);

dtItem  = ds.Tables[0].Copy();

 

//这里比如要对查询的数据做一些列的数据处理比较耗时

................................
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值