当我在c#winforms应用程序上运行Code Analysis时,我收到以下警告;
应该处理CA2213一次性字段'LogEntryForm'包含IDisposable类型的字段'LogEntryForm._changeValuesNavigator':'DynamicBindingNavigator'。 更改“LogEntryForm”上的Dispose方法以在此字段上调用Dispose或Close。 UI LogEntryForm.Designer.cs 15
有问题的代码是
partial class LogEntryForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
上述代码有可能放在form的design.cs中,解决办法:
将design.cs的这部分代码删除
然后在form窗体代码中添加如下:
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (BoldShowFont != null)
{
BoldShowFont.Dispose();
}
if (BoldShowFontForAuto != null)
{
BoldShowFontForAuto.Dispose();
}
if (components != null)
components.Dispose();
}
base.Dispose(disposing);
}