1

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

在使用调试和逐步(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);
    }
}
4

1 回答 1

1

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

尽管如此,从一些非常具体的功能终止整个应用程序在设计上并不是一个好主意。

于 2016-06-02T13:04:38.170 回答