考虑以下代码,我有几个关于最佳实践的问题:
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中是否有更好的编写方式?
await
的代码中,就像上下文一样。 - user2864740