我最近在尝试使用 VS.Net 2008 中的 Quickwatch 或 Watch 检查属性值时遇到了一个问题。经过一番调查,发现 SqlConnections 的连接字符串上有“Asynchronous Processing=true”(到 MSSQL 2008 server) 导致在第一个查询似乎成功完成后,调试器中的属性评估超时。
以下内容有望阐明我的问题(注意您需要更改数据源名称才能运行它):
Imports System.Data.SqlClient
Public Class Thing
Private Function DoSqlQuery() As Integer
Using conn As New SqlConnection("Data Source=MYSERVER;Initial Catalog=master;Integrated Security=SSPI;Asynchronous Processing=true;")
conn.Open()
Using cmd As New SqlCommand("SELECT COUNT(*) FROM sys.tables", conn)
Return DirectCast(cmd.ExecuteScalar(), Integer)
End Using
End Using
End Function
Public ReadOnly Property Value() As Integer
Get
Return DoSqlQuery()
End Get
End Property
Public ReadOnly Property Value2() As Integer
Get
Return DoSqlQuery()
End Get
End Property
Public Shared Sub Main()
Dim t As New Thing
t = t ' Put a breakpoint here.
End Sub
End Class
在行上放一个断点t = t
,然后是 Quickwatch(或添加一个 Watch),然后展开t
以查看属性值。经过长时间的延迟(大约 10 到 20 秒)后,扩展完成,两个属性值中只有一个可用 - 例如
现在,如果将连接字符串更改为 removeAsynchronous Processing=true;
或将该属性的值更改为false
,则一切正常。
我很想知道是否有人遇到过这个问题并且可以提供解决方法,而不是从连接字符串中删除属性。
谢谢。