VS.Net 2008中的“Asynchronous Processing = true”和Quickwatch / Watch问题

时间:2012-08-24 08:51:07

标签: vb.net debugging visual-studio-2008 asynchronous sqlconnection

在尝试使用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以查看属性值。经过长时间的延迟(大约十到二十秒),扩展完成,只有两个属性值中的一个可用 - 例如

Only one of two property values are available

现在,如果连接字符串更改为删除Asynchronous Processing=true;,或者将该属性的值更改为false,那么一切都很顺利。

我有兴趣知道是否有人遇到此问题并且可以提供解决方法,而不是从连接字符串中删除属性。

感谢。

1 个答案:

答案 0 :(得分:2)

这似乎是Visual Studio 2008中的一个错误 - 虽然它可能没有什么安慰,但它似乎已在Visual Studio 2010(和2012)中得到解决。