如何使用ADO.NET创建异步方法?同步查询方法转异步实现
同步查询方法转异步实现
要把同步的数据库查询方法改成异步版本,主要需要做以下几点调整:
- 方法签名添加
async关键字,返回类型改为Task<DataTable>,并遵循异步方法命名惯例加上Async后缀 - 将连接打开、数据填充的同步操作替换为对应的异步方法,并通过
await关键字等待异步操作完成 - 保持原有的异常处理逻辑不变
修改后的异步代码如下:
public async Task<DataTable> ExecuteQueryAsync(string query) { DataTable dt = new DataTable(); try { using (SqlConnection conn = new SqlConnection(connectionString)) { await conn.OpenAsync(); using (SqlCommand command = new SqlCommand(query, conn)) { SqlDataAdapter dataAdapter = new SqlDataAdapter(command); await dataAdapter.FillAsync(dt); } } return dt; } catch (Exception ex) { throw new Exception("执行查询出错: " + ex.Message); } }
关键说明
- 异步方法命名使用
ExecuteQueryAsync是.NET的通用惯例,便于区分同步/异步方法 await conn.OpenAsync()异步打开数据库连接,避免阻塞主线程await dataAdapter.FillAsync(dt)是Fill方法的异步等效实现,异步完成DataTable的填充- 异常处理逻辑和原同步方法一致,捕获异常后包装并重新抛出
内容的提问来源于stack exchange,提问作者Alexis Adrovez
相关产品推荐
相关产品推荐

