2016-06-02 10 views
0

В какой-то момент во время моего приложения я хочу сохранить файл, и если он не сможет выйти из приложения, отобразите причину сбоя и освободите все неуправляемые ресурсы, которые будут выполняться через distructor.C# Force закрыть приложение и бесплатные неуправляемые ресурсы

При выполнении отладки и пошагового (F11) исполнения я видел, что в моем коде не вызван distructor. Освобожден ли неуправляемый ресурс или есть способ также обеспечить, чтобы вызывающие вызовы вызывались в случае, если информация не может быть сохранена, и приложение должно выйти?

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); 
    } 
} 

ответ

0

Когда процесс завершается, то операционная система гарантирует, что все ресурсы (память, открытые файлы, открыли сокеты, объекты синхронизации, и т.д.) ваш процесс имеет освобождены. Поэтому нет необходимости беспокоиться о утечке ресурсов.

Тем не менее, прекращение всего приложения с помощью некоторых конкретных функций не является хорошей идеей.