| ■No91523 (kiku さん) に返信 > PANG2さんからご紹介頂いたWeakReferenceを使ってみたのですが、 > うまく判断できないように見えました。
WindowsとCEで差異はありますか?
public static class WeakReferenceList { private class pair { public string name; public WeakReference wRef; } private static readonly List<pair> list = new List<pair>();
public static void Add(Control c) { list.Add(new pair() {name = c.Name, wRef = new WeakReference(c) }); }
public static string dump() { var sw = new System.IO.StringWriter(); foreach (pair c in list) { sw.Write(c.name); if (c.wRef.IsAlive) { sw.Write("(a)"); if (((Control)c.wRef.Target).IsDisposed) sw.Write("(d)"); } sw.WriteLine(""); } return sw.ToString(); } }
private void Form1_Load(object sender, EventArgs e) { WeakReferenceList.Add(this); WeakReferenceList.Add(label1); WeakReferenceList.Add(textBox1); }
static void Main() { Application.Run(new Form1());
MessageBox.Show(WeakReferenceList.dump()); GC.Collect(); MessageBox.Show(WeakReferenceList.dump()); }
|