在类销毁期间运行方法

时间:2013-10-27 15:30:36

标签: c# mvvm

我有一个MVVM项目,需要在VM被销毁时运行一些方法。我正在尝试这个:

public class MyClass
{
    public void MyCleanUpmethod(object p)
    {
       // My Clean up proccess here 
       ....
    }       

    ~ MyClass()
    {
        MyCleanUpmethod(new object());
    }
}

我的问题是~ MyClass()仅在关闭整个应用程序时运行,我需要在当前procces期间不再使用MyClass时运行它。

这意味着如果MyClass用作Datacontext窗口~ MyClass()必须在窗口关闭时运行,如果MyClass的实例用于其他不同的事情, Datacontext~ MyClass()也必须运行

我该怎么做?

2 个答案:

答案 0 :(得分:2)

您应该查看IDisposable界面。然后,您的析构函数代码将进入Dispose方法,该方法应由您自己的代码调用。或者,您可以使用using语句,该语句负责在范围的末尾调用Dispose。要清楚地实现dispose模式,请查看MSDN article

使用终结器是不合适的,因为垃圾收集器会调用它,这可能不及时(就像你的情况一样)。

答案 1 :(得分:1)

不要将析构函数用于托管代码。 而是实现IDisposable:

public class MyClass : IDisposable
{
    public void MyCleanUpmethod(object p)
    {
       // My Clean up proccess here 
       ....
    }       

    public void Dispose()
    {
        MyCleanUpmethod(new object());
    }
}

然后使用这样的类:

using (var cls = new MyClass())
{
 //do stuff with cls
}