最佳实践:清理ViewModelLocator

3

在我的MVVM Light应用程序中,ViewModel有一些资源,在应用程序关闭时必须将其释放。我在ViewModelLocator中有一个CleanUp方法来完成此操作。在我的应用程序中,什么地方是调用CleanUp方法的正确位置。

public class ViewModelLocator
{
    /// <summary>
    /// Initializes a new instance of the ViewModelLocator class.
    /// </summary>
    public ViewModelLocator()
    {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        SimpleIoc.Default.Register<MainViewModel>();
    }
    public MainViewModel Main
    {
        get
        {
            return SimpleIoc.Default.GetInstance<MainViewModel>();
        }
    }
    public static void Cleanup()
    {
        var main=SimpleIoc.Default.GetInstance<MainViewModel>();
        main.Dispose();
    }
}
public class MainViewModel:ViewModelBase, IDisposable
{

    public void Dispose()
    {
       disposableResoure.Dispose();
    }
}
2个回答

1

0

如果您正在退出应用程序,那么为什么要清理资源呢?当进程被关闭时,操作系统会自动处理。当您不再需要资源时,您需要调用IDisposable上的Dispose()方法以清理所有未托管的资源。如果进程被丢弃,则没有必要调用它,因为在进程消失后,内存空间中不会发生垃圾回收。

我同意在窗口超出用户范围并且不再需要时清除资源,但是进程结束并不是必要的。

这里是使用Cleanup()方法的另一种方式:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接