在尝试使用VS.Net 2008中的Quickwatch或Watch检查属性值时,我最近遇到了一个问题。经过一些调查,发现在SqlConnections的连接字符串上有“Asynchronous Processing = true”(到在第一个查询看似成功完成后,MSSQL 2008服务器)导致属性评估在调试器中超时。
以下内容有望解释我的问题(N.B.您需要更改数据源名称才能运行):
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
以查看属性值。经过长时间的延迟(大约十到二十秒),扩展完成,只有两个属性值中的一个可用 - 例如
现在,如果连接字符串更改为删除Asynchronous Processing=true;
,或者将该属性的值更改为false
,那么一切都很顺利。
我有兴趣知道是否有人遇到此问题并且可以提供解决方法,而不是从连接字符串中删除属性。
感谢。
答案 0 :(得分:2)
这似乎是Visual Studio 2008中的一个错误 - 虽然它可能没有什么安慰,但它似乎已在Visual Studio 2010(和2012)中得到解决。