3

我最近在尝试使用 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,则一切正常。

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

谢谢。

4

1 回答 1

2

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

于 2012-08-24T09:33:53.587 回答