/// <remarks> /// Вся логика по "очистке" реализуется в этом методе /// </remarks> protected virtual void Dispose(bool disposing) { Console.WriteLine("Dispose({0})", disposing); if (disposing) { // Вызываем Dispose() для управляемых ресурсов которыми мы владеем // Делаем проверки на null для защиты от возможного повторного вызова Dispose() if (_managedResource != null) { _managedResource.Dispose(); _managedResource = null; } } // Освобождаем неуправляемые ресурсы if (_nativeResource != IntPtr.Zero) { Marshal.FreeHGlobal(_nativeResource); _nativeResource = IntPtr.Zero; } }