c# で GC/ファイナライザーがどのように機能するかを理解しようとしているので、次のプログラムを作成しました。しかし、ReadKey の後、ファイナライザーは 36193 回呼び出されます。プログラムが終了し、AppDomain がアンロードされているときに一度だけ呼び出す必要があると考えました。ここで何が欠けていますか、これはどのように機能しますか?
private class GCAnalyzer
{
private static int count = 0;
~GCAnalyzer()
{
if (!AppDomain.CurrentDomain.IsFinalizingForUnload())
{
count++;
GC.ReRegisterForFinalize(this);
Console.WriteLine("GC " + count);
}
}
}
static void Main(string[] a)
{
new GCAnalyzer();
Console.ReadKey();
}