public void Dispose() { lock (sync) { if (disposing | disposed) { return; } else { disposing = true; } } Application.IdleTimeoutRemove(refresh_timeout_id); refresh_timeout_id = 0; ServiceManager.PlayerEngine.DisconnectEvent(OnPlayerEvent); ServiceManager.Get <DBusCommandService> ().ArgumentPushed -= OnCommandLineArgument; ServiceManager.Get <Network> ().StateChanged -= OnNetworkStateChanged; if (download_manager_iface != null) { download_manager_iface.Dispose(); download_manager_iface = null; } if (feeds_manager != null) { feeds_manager.Dispose(); feeds_manager = null; } if (download_manager != null) { download_manager.Dispose(); download_manager = null; } DisposeInterface(); lock (sync) { disposing = false; disposed = true; } }