为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
catspeake 2023-12-17 17:05:04
我认为我的问题的要点是:最佳实践是什么,或者 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的设计器来创建表单的。
查看完整描述

1 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

静态代码分析工具期望您在 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);

}


查看完整回答
反对 回复 2023-12-17
  • 1 回答
  • 0 关注
  • 61 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信