瞥见ADO"ExecuteReaderAsync()"没有响应
Glimpse ADO "ExecuteReaderAsync()" does not respond
使用 Glimpse ADO 时 ExecuteReaderAsync()
永远 return 没有任何响应:
var factory = System.Data.Common.DbProviderFactories.GetFactory("System.Data.SqlClient");
var conn = factory.CreateConnection();
conn.ConnectionString = "YourConnectionString";
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = "Select 1"; // Correct SQL is not required. If use SQL "Foo" brings same result.
var result = cmd.ExecuteReaderAsync().Result; // NG. Responce did not return forever.
// var result = cmd.ExecuteReader(); // OK. Responce is return soon.
我使用 GlimpseAdo,所以 factory.CreateConnection()
创建了一个 GlimpseDbConnection
的实例。
然后我通过 GlimpseDbCommand
执行 SQL async 并等待查询结果 async.
但是cmd.ExecuteReaderAsync().Result
一直没有return任何回应。
等待超过10分钟,但没有超时。
我在 VisualStudio 上暂停调试,调试语句打开
var result = cmd.ExecuteReaderAsync().Result;
.
我认为...这个问题是由异步引起的。
您知道响应消失的原因和位置吗?
谢谢你的帮助 !
使用:
.Net Framework 4.5.2
Glimpse.Core1.8.6
一瞥ADO 1.7.3
SQL 服务器 2008 R2
这个:
var result = cmd.ExecuteReaderAsync().Result;
导致您的代码死锁。我假设您是 运行 一个传递同步上下文的应用程序(UI、ASP.NET、通用应用程序等)。这就是为什么你 shouldn't block on async code
要解决此问题,您必须制定方法 async Task
并使用 await
而不是 .Result
:
var result = await cmd.ExecuteReaderAsync();
您还可以查看 Trying to call Async method synchronously. It waits on Task.Result forever and deadlock even after using ConfigureAwait(false) in Asp.Net flow 了解更多信息。
使用 Glimpse ADO 时 ExecuteReaderAsync()
永远 return 没有任何响应:
var factory = System.Data.Common.DbProviderFactories.GetFactory("System.Data.SqlClient");
var conn = factory.CreateConnection();
conn.ConnectionString = "YourConnectionString";
conn.Open();
var cmd = conn.CreateCommand();
cmd.CommandText = "Select 1"; // Correct SQL is not required. If use SQL "Foo" brings same result.
var result = cmd.ExecuteReaderAsync().Result; // NG. Responce did not return forever.
// var result = cmd.ExecuteReader(); // OK. Responce is return soon.
我使用 GlimpseAdo,所以 factory.CreateConnection()
创建了一个 GlimpseDbConnection
的实例。
然后我通过 GlimpseDbCommand
执行 SQL async 并等待查询结果 async.
但是cmd.ExecuteReaderAsync().Result
一直没有return任何回应。
等待超过10分钟,但没有超时。
我在 VisualStudio 上暂停调试,调试语句打开
var result = cmd.ExecuteReaderAsync().Result;
.
我认为...这个问题是由异步引起的。
您知道响应消失的原因和位置吗?
谢谢你的帮助 !
使用:
.Net Framework 4.5.2
Glimpse.Core1.8.6
一瞥ADO 1.7.3
SQL 服务器 2008 R2
这个:
var result = cmd.ExecuteReaderAsync().Result;
导致您的代码死锁。我假设您是 运行 一个传递同步上下文的应用程序(UI、ASP.NET、通用应用程序等)。这就是为什么你 shouldn't block on async code
要解决此问题,您必须制定方法 async Task
并使用 await
而不是 .Result
:
var result = await cmd.ExecuteReaderAsync();
您还可以查看 Trying to call Async method synchronously. It waits on Task.Result forever and deadlock even after using ConfigureAwait(false) in Asp.Net flow 了解更多信息。