我正在尝试根据Microsoft代码分析修复所有项目警告(CA:XXXXX(
警告之一是"CA2000:在失去作用域之前释放对象">
我的代码是:
Private sub Foo()
Dim O As New Form1()
O.Show()
End Sub
Visual studio说对象O不是一次性的,在这种情况下我不能使用关键字USING,因为我会在End Using
之后丢失对象O:
Private sub Foo()
Using O As New Form1()
O.Show() 'The form will open then close !!!
End Using
End Sub
然后,表单将打开和关闭
在这种情况下如何使用CA2000,我不需要忽略,我想解决和修复。
谢谢。
我不需要忽略,我想解决和修复。
在这种特定情况下,这实际上是一个错误的警告。 您不希望在此特定情况下"解决并修复"此消息,因为您希望对象"存活"在本地范围的末尾之外。
如果对该作用域中的对象调用Dispose
,在这种情况下,您将(始终(关闭窗体。
ShowDialog
怎么样?
Private sub Foo()
Using O As New Form1()
O.ShowDialog()
End Using
End Sub
它将在我关闭后处置Form1
的所有资源。