猿问

在 FormClosed 处处理字段,而不会收到 VS 代码分析警告

我认为我的问题的要点是:最佳实践是什么,或者 Visual Studio 2019 是否给我关于处置项目的错误提示? 这篇文章 谈论代码分析中的错误,但处理项目仍然有点超出我的知识领域。

我有一个表格,其中声明了一些字段:

public partial class FormRequestLines : Form

    Process view3dProcess;

    Process view2dProcess;

    Label label;

    ......

这些字段用于(重新)启动和终止进程,以及以不同的方法写入和隐藏到新创建的标签。


为了处理这些字段,我创建了一个 FormClosed 方法:


private void FormRequestLines_FormClosed(object sender, FormClosedEventArgs e)

{

    if (view2dProcess != null) { view2dProcess.Dispose(); }

    if (view3dProcess != null) { view3dProcess.Dispose(); }

    if (label != null) { label.Dispose(); }

}

1) 字段的处理方式正确吗?
2) 这是正确的方式和地点 处理字段?

Visual Studio 给了我这些警告:

PS:我是用VS的设计器来创建表单的。



catspeake
浏览 124回答 1
1回答

HUX布斯

静态代码分析工具期望您在 Dispose() 方法中进行处理。您需要重写表单中的 Dispose 方法并删除 FormRequestLines_FormClosed。查看Form.Close 和 Form.Dispose 之间的区别通常,这会在 FormRequestLines.Designer.cs 文件中自动覆盖,因此您需要将处置移至代码文件中,以便您可以添加需要添加的任何代码,而无需设计器重写。protected override void Dispose(bool disposing){  if (disposing)  {    components?.Dispose();    view2dProcess?.Dispose();    view3dProcess?.Dispose();    label?.Dispose();  }  base.Dispose(disposing);}
随时随地看视频慕课网APP
我要回答