public void StartSendingEventsToWorkspaceHost(IVisualStudioWorkspaceHost host) { AssertIsForeground(); var hostData = _workspaceHosts.FirstOrDefault(s => s.Host == host); if (hostData == null) { throw new ArgumentException("The workspace host not registered", nameof(host)); } // This method is idempotent. if (hostData.HostReadyForEvents) { return; } hostData.HostReadyForEvents = true; // If any of the projects are already interactive, then we better catch up the host. var interactiveProjects = this.ImmutableProjects.Where(p => p.PushingChangesToWorkspaceHosts); if (interactiveProjects.Any()) { hostData.StartPushingToWorkspaceAndNotifyOfOpenDocuments(interactiveProjects); } }
public void RegisterWorkspaceHost(IVisualStudioWorkspaceHost host) { if (_workspaceHosts.Any(hostState => hostState.Host == host)) { throw new ArgumentException("The workspace host is already registered.", "host"); } _workspaceHosts.Add(new WorkspaceHostState(this, host)); }
public WorkspaceHostState(VisualStudioProjectTracker tracker, IVisualStudioWorkspaceHost workspaceHost) { _tracker = tracker; _workspaceHost = workspaceHost; _pushedProjects = new HashSet <AbstractProject>(); this.HostReadyForEvents = false; _solutionAdded = false; }
public WorkspaceHostState(VisualStudioProjectTracker tracker, IVisualStudioWorkspaceHost workspaceHost) { _tracker = tracker; _workspaceHost = workspaceHost; _pushedProjects = new HashSet<AbstractProject>(); this.HostReadyForEvents = false; _solutionAdded = false; }
public void RegisterWorkspaceHost(IVisualStudioWorkspaceHost host) { this.AssertIsForeground(); if (_workspaceHosts.Any(hostState => hostState.Host == host)) { throw new ArgumentException("The workspace host is already registered.", nameof(host)); } _workspaceHosts.Add(new WorkspaceHostState(this, host)); }
private void RegisterWorkspaceHostOnForeground(IVisualStudioWorkspaceHost host) { this.AssertIsForeground(); if (_workspaceHosts.Any(hostState => hostState.Host == host)) { throw new ArgumentException("The workspace host is already registered.", nameof(host)); } _workspaceHosts.Add(new WorkspaceHostState(this, host)); }
public void RegisterWorkspaceHost(IVisualStudioWorkspaceHost host) { ExecuteOrScheduleForegroundAffinitizedAction( () => RegisterWorkspaceHostOnForeground(host)); }