由于项目使用的是远程数据库,在执行
sql
语句时需要异步处理,如果不做异步处理,将阻塞主线程,会出现卡死的情况,大概了解了一下
wpf
的异步处理方法,发现和
javascript
差不多,使用的都是
async
和
await
,只是将
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);