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 に答える