C#-SqlConnection.OpenAsync()退出而不会引发异常
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-SqlConnection.OpenAsync()退出而不会引发异常,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1288字,纯文字阅读大概需要2分钟。
内容图文
![C#-SqlConnection.OpenAsync()退出而不会引发异常](/upload/InfoBanner/zyjiaocheng/885/ec26f409e53a4d36b0a789815bf4645b.jpg)
我有以下代码.对connection.OpenAsync()的调用将毫无例外地退出程序.即使最后调用者方法也不会被调用.程序针对.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()添加到从main方法(即sync)对async方法的调用中,并且工作正常.
谢谢!
内容总结
以上是互联网集市为您收集整理的C#-SqlConnection.OpenAsync()退出而不会引发异常全部内容,希望文章能够帮你解决C#-SqlConnection.OpenAsync()退出而不会引发异常所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。