| ■No91546 (kiku さん) に返信
> ここまでの情報や実験結果を用いてどのように対処していくのか
> 方向性を出したいと思っています。
> 少し考えさせてください。
下記のような対応にて、様子を見ることになりました。
Font.Dispose()については、意味がないことを説明したのですが、
ご理解得ることはできなかったため、実装しています。
実装しても弊害が発生することはないと思いますので。
結果が出るまでに、時間がかかると思いますので
ここで解決済みとします。
partial class Test
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
CustomDispose.Dispose(this.Controls);//★対策追加
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.lbl_serialnumber = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// lbl_serialnumber
//
this.lbl_serialnumber.BackColor = System.Drawing.Color.White;
this.lbl_serialnumber.Font = new System.Drawing.Font("MS ゴシック", 16F, System.Drawing.FontStyle.Bold);
this.lbl_serialnumber.Location = new System.Drawing.Point(5, 115);
this.lbl_serialnumber.Name = "lbl_serialnumber";
this.lbl_serialnumber.Size = new System.Drawing.Size(310, 20);
this.lbl_serialnumber.Text = "lbl_serialnumber";
//
// Test
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
this.ClientSize = new System.Drawing.Size(640, 480);
this.ControlBox = false;
this.Controls.Add(this.lbl_serialnumber);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Test";
this.Text = "Test";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
this.ResumeLayout(false);
}
private System.Windows.Forms.Label lbl_serialnumber;
}
//★ここ以降対策追加
public class CustomDispose
{
static public void Dispose(Control.ControlCollection Controls)
{
foreach (var c in Controls)
{
Logger.Info(c.GetType().ToString());
switch (c.GetType().FullName)
{
case "System.Windows.Forms.Label":
((System.Windows.Forms.Label)c).Font.Dispose();
((System.Windows.Forms.Label)c).Dispose();
break;
//ここにTextBoxなどの他のコントロールも多数存在する。
//ここにカスタムコントロールも多数存在する。
default:
//●解放漏れの可能性あり●
break;
}
}
}
}
|