gpt4 book ai didi

c# - SqlConnection.OpenAsync() 退出而不抛出异常

转载 作者:行者123 更新时间:2023-11-30 15:30:38 33 4
gpt4 key购买 nike

我有以下代码。对 connection.OpenAsync() 的调用无一异常(exception)地退出了程序。即使是调用者方法上的 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;
}
}

最佳答案

所以问题在于,在代码中我有异步调用链,但父(主)方法不是异步的,也没有等待导致程序在其中一个子方法调用异步时退出。我将 .Wait() 添加到主方法(同步)对异步方法的调用中,它工作正常。

谢谢!

关于c# - SqlConnection.OpenAsync() 退出而不抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21744196/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com