CA2000:在丢失范围和 Form.Show() 之前释放对象



我正在尝试根据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的所有资源。

最新更新