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

时间:2012-05-18 18:47:20

标签: vb.net visual-studio-2010

我正在尝试根据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,我不需要忽视,我想解决并修复。

感谢。

2 个答案:

答案 0 :(得分:1)

  

我不需要忽略,我想解决并修复。

在这个特定情况下,这实际上是一个虚假警告。在这种特定情况下,您不希望“解决并修复”此消息,因为您希望对象“超出”本地范围的末尾“活动”。

如果您在该范围内的对象上调用Dispose,您将(始终)关闭该表单,在这种情况下。

答案 1 :(得分:0)

ShowDialog怎么样?

Private sub Foo()
   Using O As New Form1()
      O.ShowDialog()
   End Using
End Sub

我将在关闭后处置Form1的所有资源。