2022-02-09
Mongodb初探
2022-02-09
PHP连接MySQL数据库的几种方式
2022-02-09
CSS实现多重边框和内凹圆角
2022-02-09
遮罩动画效果
2021-04-17
java web 站内信
2021-04-17
利用java执行shell脚本
2022-06-16
网站域名备案好处真的很多
鉴于以下代码,我有几个关于最佳实践的问题:
string connectionString = @"Server=(local)\sqlexpress; Database=master; Integrated Security=true;";
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlDataAdapter dataAdapter = new SqlDataAdapter("select * from information_schema.columns", connection))
await connection.OpenAsync();
DataTable dataTable = new DataTable();
await Task.Run(() => dataAdapter.Fill(dataTable));
return dataTable;
我见过几个将整个代码块包装在 Task.Run() 调用中的示例,但我不确定这是否比仅针对 DataAdapter.Fill() 方法调用 Task.Run() 更好,感觉更灵活和具体(仅在异步任务上使用 await)。
在 Fill() 方法上调用 Task.Run() 的方法是否比包装整个代码块更好?
在 Task.Run() 中调用 Fill() 是否有任何负面影响?如果 Fill() 出现错误,我正在考虑丢失调用堆栈和/或异常信息的问题。
有没有更好的方法在 ASP.NET 中编写它?
请您参考如下方法:
在 ASP.NET 中,使用 Task.Run
几乎无济于事。它究竟会改善什么?它只会引入开销。
也就是说,Fill
将执行 IO(耗尽数据读取器),因此您可能想要异步调用它。遗憾的是,此方法没有异步版本。
如果您坚持使用异步 IO (which is questionable for database access),您需要寻找替代方案。也许异步 Entity Framework 或原始 ADO.NET 可以帮助您。
京ICP备19004545号