private async Task ShutdownAsync() { // we are shutting down, cancel any pending work. _cancellationTokenSource.Cancel(); await ThreadingContext.JoinableTaskFactory.SwitchToMainThreadAsync(); if (_priorityCommandTargetCookie != VSConstants.VSCOOKIE_NIL) { var priorityCommandTargetRegistrar = _serviceProvider.GetService <SVsRegisterPriorityCommandTarget, IVsRegisterPriorityCommandTarget>(); var cookie = _priorityCommandTargetCookie; _priorityCommandTargetCookie = VSConstants.VSCOOKIE_NIL; var hr = priorityCommandTargetRegistrar.UnregisterPriorityCommandTarget(cookie); if (ErrorHandler.Failed(hr)) { FatalError.ReportWithoutCrash(Marshal.GetExceptionForHR(hr)); } } if (_oleComponent != null) { _oleComponent.Dispose(); _oleComponent = null; } }
public void Shutdown() { AssertIsForeground(); if (_priorityCommandTargetCookie != VSConstants.VSCOOKIE_NIL) { var priorityCommandTargetRegistrar = _serviceProvider.GetService <IVsRegisterPriorityCommandTarget, SVsRegisterPriorityCommandTarget>(); var cookie = _priorityCommandTargetCookie; _priorityCommandTargetCookie = VSConstants.VSCOOKIE_NIL; var hr = priorityCommandTargetRegistrar.UnregisterPriorityCommandTarget(cookie); if (ErrorHandler.Failed(hr)) { FatalError.ReportWithoutCrash(Marshal.GetExceptionForHR(hr)); } } if (_oleComponent != null) { _oleComponent.Dispose(); _oleComponent = null; } }