vb.net - 在 VS 2015 VB.NET 中实现 IDisposable 的类上的“查找所有引用”不起作用

标签 vb.net visual-studio-2015 idisposable find-all-references

在 VS 2015 中,当我在实现 IDisposable 的类的类定义上单击“查找所有引用”时,它会为实现 IDisposable 的每个类返回 MyBase.Finalize()

注意:当我在类定义本身(即 Public Class Test123 )上单击“查找所有引用”时,会发生这种情况。如果我在实现上单击“查找所有引用”(即 New Test123 ),那么它只会获取使用特定 New 构造函数的实例。这也令人困惑。在 VS 2010 中,类定义本身和所有实现都分组在一个列表中,但在 2015 年则不然。

请参阅下面的屏幕截图。即使当我将鼠标悬停在类 Test123 上时,它也会突出显示 两者 MyBase.Finalize() Test123Test456 方法

Visual Studio 2010 不会执行此操作。这是一个错误,还是一个“新功能”?

这带来的困难是,对于当前正在工作的项目,我们为每个类手动实现IDisposable。因此,当我在任何类上单击“查找所有引用”时,需要 10-20 秒才能找到引用,然后它会显示数千个 MyBase.Finalize() 实例(每个类一个),并且它是基本上完全没用。

Screenshot (I can't directly insert pictures with my acct yet)

Public Class Form1
    Dim a As New Test123
    Dim b As New Test456
End Class

Public Class Test123
    Implements IDisposable

    Dim A As Double = 0

    'Dispose Implementation
    Dim mbDisposed As Boolean = False
    Public Overloads Sub Dispose() Implements IDisposable.Dispose
        Dispose(True)
    GC.SuppressFinalize(Me)
    End Sub
    Private Overloads Sub Dispose(ByVal lbDisposing As Boolean)
        If Not mbDisposed Then
            If lbDisposing Then
                'Dispose of all nullable objects
            End If
        End If
        mbDisposed = True
    End Sub
    Protected Overrides Sub Finalize()
        Dispose(False)
        MyBase.Finalize()
    End Sub
End Class

Public Class Test456
    Implements IDisposable

    Dim B As Double = 1

    'Dispose Implementation
    Dim mbDisposed As Boolean = False
    Public Overloads Sub Dispose() Implements IDisposable.Dispose
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
    Private Overloads Sub Dispose(ByVal lbDisposing As Boolean)
        If Not mbDisposed Then
            If lbDisposing Then
                'Dispose of all nullable objects
            End If
        End If
        mbDisposed = True
    End Sub
    Protected Overrides Sub Finalize()
        Dispose(False)
        MyBase.Finalize()
    End Sub
End Class

最佳答案

例如,对于给定的方法,尝试在其上使用“调用层次结构”来查看 3 组调用:

  1. 调用其“基础”实现
  2. 调用其“覆盖”实现
  3. 调用其直接(当前类)实现

enter image description here


enter image description here


有帮助吗?

关于vb.net - 在 VS 2015 VB.NET 中实现 IDisposable 的类上的“查找所有引用”不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38730192/

相关文章:

unity-container - 统一处置对象

.net - 使用 SmtpClient 和 IDisposable

c# - 如何强行释放MemoryStream占用的内存?

vb.net - 为什么要使用退出选择?

PHP加密&VB.net解密

c# - 将 Xamarin 应用程序部署到设备时,Visual Studio 2015 有时会卡住

visual-studio-2015 - 元素 'system.webServer' 具有无效的子元素 'aspNetCore'

asp.net - 检查所有文本框是否不为空的有效方法

c# - 如何在datagridview c#中只显示我的查询结果

asp.net - 使用 Typescript 时出现 Visual Studio 2015 codelens 问题