C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■91531 / )  Re[5]: メモリリークに関して
□投稿者/ PANG2 (309回)-(2019/07/03(Wed) 23:35:41)
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());
}

返信 編集キー/


管理者用

- Child Tree -