C# Programmierung

Garbage Collector und Destruktor

Der GC ruft den Destruktor auf; manchmal ist es notwendig, den GC zu zwingen, die Arbeit aufzunehmen um den Destruktor zu aktivieren



/* Roland Kneringer 2006

* Date: 31.10.2006

*/


using System;

using System.Collections.Generic;

using System.Drawing;

using System.Windows.Forms;


namespace destruktor

{

public class MyClass {

public string name;

public MyClass(string s){

name = s;

MessageBox.Show("ich lebe:"+name);

}

~MyClass(){

MessageBox.Show("ich sterbe: "+name);

}

}

public class MyApplication

{

public static void Main(string[] args)

{

MyClass myObj1 = new MyClass("1");

// hier lebt das Objekt um gleich darauf zu sterben

MyClass myObj2 = new MyClass("2");

myObj2 = null;

myObj1 = null;

// System.GC.Collect();

//Garbage Collector zwingen zu arbeiten

// while (1==1);

// Endlosschleife, die Destruktoren werden nicht aufgerufen

// ohne GC.Collect

}

}

}



Achtung! Das Programm hat am Ende eine Endlosschleife: wenn sie aktiviert ist, wird die Anwendung nicht geschlossen und der GC muß gezwungen werden, die Objekte freizugeben.


© Kner 2006