我有以下代码。调用connection.OpenAsync()时程序会退出而没有任何异常。甚至调用者方法上的finally也不会被调用。该程序针对的是.NET45,有什么想法吗?
更新:这里是父代码,使用.Wait()可以正常工作。当在下面的子方法中调用connection.OpenAsync()时,没有使用.Wait()时程序会退出。
static void Main(string[] args)
{
UpdateSqlDatabase updateSqlDatabase = new UpdateSqlDatabase(args);
updateSqlDatabase.UpdateDatabaseSchemaAsync().Wait();
}
经过一系列异步方法调用后:
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;
}
}
catch (Exception) {}
,你会自食其果的。毕竟异常详情是什么? - noseratio - open to work