我最近搬到了Visual Studio 2019 V16.2,现在每当我在Windows表单应用程序中移动表单时,它都向我展示了一个新的"消息"。
IDE0067 Disposable object created by 'New FindFile' is never disposed
我一直在项目中使用代码片段中的"下一个"表单,例如:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim frmFindFile As New FindFile
frmFindFile.Show()
Me.Close()
End Sub
我在做什么错?一旦显示新的变量,我应该处置表单变量吗?下面摆脱了警告,但我的第二种形式从未显示!
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim frmFindFile As New FindFile
frmFindFile.Show()
Me.Close()
frmFindFile.Dispose()
End Sub
vb.net具有表单的默认实例,因此,如果您只使用FindFile.Show()
,则不会发出警告。
有关更多信息,请参阅答案,为什么在vb.net中有每个表格的默认实例,而在c#?
我还没有看到这个问题的正确答案,但是有一个。
上面列出的原始代码是:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim frmFindFile As New FindFile
frmFindFile.Show()
Me.Close()
End Sub
然而,正确的方法是:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Using frmFindFile As FindFile = New FindFile()
frmFindFile.Show()
End Using
Me.Close()
End Sub
这将自动处理需要处置的使用结构中的任何东西。
几乎所有可以使用dim/as类结构进行实例化的东西都可以放置在使用结构中。
另一个示例是使用StreamReader/Writer。将其与使用实例化,然后不用使用instance.close((,只需使用end用来将其关闭并处置它。