假设我有一个包含事件的类:
class MyClass
{
public delegate void MyDelegate();
public event MyDelegate MyEvent;
public MyClass()
{
Console.WriteLine("MyClass created");
}
~MyClass()
{
Console.WriteLine("MyClass removed");
}
public void MyFunction()
{
Console.WriteLine("MyClass.MyFunction()");
if (MyEvent != null)
MyEvent();
}
}
假设MyFunction
是一些异步操作,所以我需要一个事件才能知道它已经完成。有时候我需要类的功能,所以我创建了类的实例,运行它并获得结果。之后,我希望实例将被销毁。
现在我实例化这个类并将其事件连接到匿名函数。为了测试功能,我创建了一个功能:
public static void Test()
{
MyClass test = new MyClass();
test.MyEvent += delegate() { Console.WriteLine("MyEvent fired"); };
test.MyFunction();
}
然后运行它:
static void Main(string[] args)
{
Console.WriteLine("test 1");
Test();
Console.WriteLine("----------------\ntest 2");
Test();
}
输出结果为:
test 1
MyClass created
MyClass.MyFunction()
MyEvent fired
----------------
test 2
MyClass created
MyClass.MyFunction()
MyEvent fired
MyClass removed
MyClass removed
不幸的是,只有在应用程序完成后才会删除MyClass
实例。使用后如何删除类(或通知GC删除)?