コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
            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;
            }
コード例 #5
0
        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));
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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));
        }
コード例 #8
0
 public void RegisterWorkspaceHost(IVisualStudioWorkspaceHost host)
 {
     ExecuteOrScheduleForegroundAffinitizedAction(
         () => RegisterWorkspaceHostOnForeground(host));
 }
コード例 #9
0
 public void RegisterWorkspaceHost(IVisualStudioWorkspaceHost host)
 {
     ExecuteOrScheduleForegroundAffinitizedAction(
         () => RegisterWorkspaceHostOnForeground(host));
 }
コード例 #10
0
        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));
        }