gpt4 book ai didi

c# - 如何扩展 WinForm 的 Dispose 方法?

转载 作者:IT王子 更新时间:2023-10-29 03:45:39 26 4
gpt4 key购买 nike

我从 FxCop 收到此警告:

"'RestartForm' contains field 'RestartForm.done' that is of IDisposable type: 'ManualResetEvent'. Change the Dispose method on 'RestartForm' to call Dispose or Close on this field."

好的,我明白这意味着什么以及为什么需要这样做...除了 System.Windows.Forms.Form 不允许您覆盖任何一个 。关闭().Dispose(),那怎么办呢?目前我正在使用这个解决方案:

    private void RestartForm_FormClosing(object sender, FormClosingEventArgs e)
{
done.Set();
done.Close();
}

这对我的应用程序来说是正常的...但是 FxCop 仍然显示这条消息。我被覆盖了吗?我可以安全地忽略它吗?或者有其他方法可以做到这一点吗?

最佳答案

您需要覆盖 Form 中的 Dispose 方法

通常这会在 RestartForm.Designer.cs 文件中自动覆盖,因此您需要将处置移至您的代码文件中,以便您可以添加任何需要添加的代码,而无需设计人员重写。

在 RestartForm.cs 中

protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}

// Dispose stuff here
}

base.Dispose(disposing);
}

关于c# - 如何扩展 WinForm 的 Dispose 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1052147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com