WPF-异步处理

由于项目使用的是远程数据库,在执行sql语句时需要异步处理,如果不做异步处理,将阻塞主线程,会出现卡死的情况,大概了解了一下wpf的异步处理方法,发现和javascript差不多,使用的都是asyncawait,只是将javascript中的Promise换成了Task。具体使用方式如下所示:

1.创建数据库工具类

public partial class DBUtil {
        private static DBUtil _DBUtil = null;
        public static DBUtil Instance()
        {
            if (_DBUtil == null) {
                _DBUtil = new DBUtil ();
            }
            return _DBUtil;
        }

        public async Task<DataTable> Query(string sql)
        {
            return await Task.Run(() =>
            {
              //这里使用的是伪代码
                return DataTable对象;
            });
        }
    }

DBUtil为一个执行sql的工具类,Query方法为异步方法,需要添加async关键字,然后使用Task.Run来开启一个线程执行耗时的操作。在return后面加一个await方法中有await 时,方法名前必须加async

2.执行查询语句

public async void loadData() {
            string sql = "select * from tb_test";
            DataTable dataTable = await DBUtil .Instance().Query(sql);
            DataRowCollection rows = dataTable.Rows;
}

当调用Query方法时,需要在前面加上await关键字,并有在该作用域的方法名前添加async

个人博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容