ksj*_*ksj 5 c# asynchronous sqlconnection async-await
我有以下代码。对 connection.OpenAsync() 的调用会毫无例外地退出程序。甚至调用方方法上的 finally 也不会被调用。程序针对.NET45 知道吗?
更新:这是与 .Wait() 一起使用的父代码。当在下面的子方法中调用 connection.OpenAsync() 时,它会在父代码中没有 .Wait() 的情况下退出。
static void Main(string[] args)
{
UpdateSqlDatabase updateSqlDatabase = new UpdateSqlDatabase(args);
updateSqlDatabase.UpdateDatabaseSchemaAsync().Wait();
}
Run Code Online (Sandbox Code Playgroud)
在一系列异步方法调用之后:
public async Task<T> ExecuteQueryAsync<T>(string connectionString, string commandText, IDictionary<string, object> parameters, Func<SqlDataReader, T> rowMapFunc)
{
using (var connection = new SqlConnection(connectionString))
{
try
{
await connection.OpenAsync();
}
catch (Exception ex)
{
}
SqlCommand command = connection.CreateCommand();
command.CommandType = CommandType.Text;
command.CommandText = commandText;
if (parameters != null)
{
foreach (var item in parameters)
{
command.Parameters.AddWithValue(item.Key, item.Value);
}
}
SqlDataReader reader = await command.ExecuteReaderAsync();
T retObj = default(T);
while (await reader.ReadAsync())
{
retObj = rowMapFunc(reader);
}
return retObj;
}
}
Run Code Online (Sandbox Code Playgroud)
可能该OpenAsync()方法正在调用Enviroment.FailFast(),这将导致任何finally 块不执行。不过,此用法会记录到事件日志中,因此您应该能够检查其中是否有任何内容。
有关更多详细信息,请参阅以下 http://msdn.microsoft.com/en-us/library/ms131100(v=vs.110).aspx
| 归档时间: |
|
| 查看次数: |
7284 次 |
| 最近记录: |