public void Disable() { lock (_gate) { if (_instanceTask == null) { // already disabled return; } var instanceTask = _instanceTask; _instanceTask = null; RemoveGlobalAssets(); _shutdownCancellationTokenSource.Cancel(); _checksumUpdator.Shutdown(); _checksumUpdator = null; try { instanceTask.Wait(_shutdownCancellationTokenSource.Token); instanceTask.Result.Shutdown(); } catch (OperationCanceledException) { // _instance wasn't finished running yet. } } }
public void Enable() { lock (_gate) { if (_instanceTask != null) { // already enabled return; } if (!_workspace.Options.GetOption(RemoteHostOptions.RemoteHost)) { // not turned on return; } // log that remote host is enabled Logger.Log(FunctionId.RemoteHostClientService_Enabled, KeyValueLogMessage.NoProperty); var remoteHostClientFactory = _workspace.Services.GetService <IRemoteHostClientFactory>(); if (remoteHostClientFactory == null) { // dev14 doesn't have remote host client factory return; } // make sure we run it on background thread _shutdownCancellationTokenSource = new CancellationTokenSource(); var token = _shutdownCancellationTokenSource.Token; // create solution checksum updator _checksumUpdator = new SolutionChecksumUpdator(_workspace, token); _instanceTask = Task.Run(() => EnableAsync(token), token); } }
public void Enable() { lock (_gate) { if (_instanceTask != null) { // already enabled return; } if (!_workspace.Options.GetOption(RemoteHostOptions.RemoteHost)) { // not turned on return; } // log that remote host is enabled Logger.Log(FunctionId.RemoteHostClientService_Enabled, KeyValueLogMessage.NoProperty); var remoteHostClientFactory = _workspace.Services.GetService<IRemoteHostClientFactory>(); if (remoteHostClientFactory == null) { // dev14 doesn't have remote host client factory return; } // make sure we run it on background thread _shutdownCancellationTokenSource = new CancellationTokenSource(); var token = _shutdownCancellationTokenSource.Token; // create solution checksum updator _checksumUpdator = new SolutionChecksumUpdator(_workspace, token); _instanceTask = Task.Run(() => EnableAsync(token), token); } }