C#Force关闭应用程序并释放非托管资源

时间:2016-06-02 12:53:55

标签: c# unmanagedresources

在我的应用程序中的某个时刻,我想保存一个文件,如果它无法退出应用程序,显示失败原因并释放所有非托管资源,这是通过析构函数完成的。

在使用调试和逐步(F11)执行时,我看到在我的代码中没有调用析构函数。 是否释放了非托管资源,或者是否有办法确保在无法保存信息且应用必须退出的情况下调用析构函数?

public class MyClass()
{
  private UnmanagedResource unmanagedResource;

  MyClass()
  {
    unmanaged resource = new UnmanagedResource();
  }

  ~MyClass()
  {
    ((IDisposable)unmanagedResource).Dispose();
  }

  public save()
  {
    try
    {
      unamangedResource.Save();
    }
    catch (System.IO.IOException)
    {
      Console.WriteLine("Error saving");
      Environment.Exit(1);
    }
}

1 个答案:

答案 0 :(得分:1)

当进程退出时,操作系统会确保释放进程保存的所有资源(内存,打开的文件,打开的套接字,同步对象等)。所以没有必要担心资源泄漏。

但是,从一些非常具体的功能中终止整个应用程序在设计方面并不是一个好主意。