用线程异步加载查询内容显示GridView

使用后台线程能够减轻主线程的工作量,虽然没什么明显差别,无聊弄弄的,也算是接触一下线程的使用。

1、把查询加载数据交给后台线程去执行

首先,先声明线程

/// <summary>
/// 声明用于初始化列表的线程
/// </summary>
protected BackgroundWorker InitBackgroundWorker;

其次,在窗体加载时让线程开始执行工作

private void NewsForm_Load(object sender, EventArgs e)
        {
            try
            {
                //后台线程执行方法initBackgroundWorker_DoWork
              InitBackgroundWorker.DoWork += initBackgroundWorker_DoWork;
              //当后台操作已完成、被取消或引发异常时执行方法initBackgroundWorker_RunWorkerCompleted
              InitBackgroundWorker.RunWorkerCompleted += initBackgroundWorker_RunWorkerCompleted;
              //开始执行线程
              InitBackgroundWorker.RunWorkerAsync();           

} catch (Exception ex) { MessageBoxErrorShow(ex); } }

initBackgroundWorker_DoWork方法

//声明一个参数实体的全局变量
private Student studentPara;
//声明一个获取实体集合的全局变量
public List<Student> lstStudent;

/// <summary>
/// 初始化Grid数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void initBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
    {
       InintPara();
       GetListData();    
  }
        /// <summary>
        /// 初始化入参条件
        /// </summary>
        /// <param name="orderby"></param>
        /// <param name="isAsc"></param>
        private void IninPara()
        {

            studentPara = new Student()
            {
                name = txtName.text;
                age = txtAge.text;
            }
       }
        /// <summary>
        /// 获取学生列表
        /// </summary>
        private void GetListData()
        {
            //这里是通过webApi实现数据分离,查询部分通过调用API实现
            //序列化查询参数实体
            var obj = JsonConvertHelper.SerializeObject(studentPara, new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd" });
            //获取查询列表
            lstStudent = GetApi<List<NewsDto>>("obj=" + obj.Replace("+", "2B%"), "Student/GetstudentByCondition");
        }

接着可以绑定grid数据源。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值