C#等待连接。OpenAsync()挂起应用程序
我在SO中尝试了多种解决方案,但都不起作用。在我的api中,我试图在另一个线程上异步调用一个方法并返回主线程C#等待连接。OpenAsync()挂起应用程序,c#,multithreading,asynchronous,task,C#,Multithreading,Asynchronous,Task,我在SO中尝试了多种解决方案,但都不起作用。在我的api中,我试图在另一个线程上异步调用一个方法并返回主线程 // in a normal method... I can't use await here string connectionString =_dbContext.Database.Connection.ConnectionString; Task.Factory.StartNew(() => CallMethodAsync(connectionString)); publ
// in a normal method... I can't use await here
string connectionString =_dbContext.Database.Connection.ConnectionString;
Task.Factory.StartNew(() => CallMethodAsync(connectionString));
public static async Task CallMethodAsync(string connectionString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
await connection.OpenAsync().ConfigureAwait(false);
using (SqlCommand command2 = connection.CreateCommand())
{
// this doesn't execute!
}
}
}
代码在wait connection.OpenAsync()处运行但挂起,不执行下一个块
有什么问题吗?可能是您的连接字符串错误,可能是连接SQL Server超时。检查连接字符串中的服务器主机名是否正确?是否正在捕获重新调谐的
任务
?如果是这样,它可能会被标记为有故障,并带有一个您可以检查的异常。我觉得自己很笨。我认为,如果连接无效,它将抛出异常,这是一个错误的假设。我需要包括密码。谢谢你们!有人把它作为一个答案,它会抛出一个异常,但问题变成了:这个异常去了哪里?发生异常的调用堆栈是什么?当涉及工作线程和异步时,会变得很棘手