private void OnDependenciesChanged(object sender, DependenciesChangedEventArgs e)
        {
            if (IsDisposing || IsDisposed)
            {
                return;
            }

            var nowait = SubmitTreeUpdateAsync(
                (treeSnapshot, configuredProjectExports, cancellationToken) =>
            {
                var dependenciesNode = treeSnapshot.Value.Tree;
                dependenciesNode     = CreateOrUpdateSubTreeProviderNode(dependenciesNode,
                                                                         e.Provider,
                                                                         changes: e.Changes,
                                                                         cancellationToken: cancellationToken,
                                                                         catalogs: e.Catalogs);

                ProjectContextChanged?.Invoke(this, new ProjectContextEventArgs(this, e.Changes));

                // TODO We still are getting mismatched data sources and need to figure out better
                // way of merging, mute them for now and get to it in U1
                return(Task.FromResult(new TreeUpdateResult(dependenciesNode,
                                                            false,
                                                            null /*GetMergedDataSourceVersions(e)*/)));
            });
        }
コード例 #2
0
        /// <summary>
        /// When project context changed event received from any context, send a global level
        /// "context changed" event, to notify  <see cref="DependenciesGraphProvider"/>.
        /// </summary>
        internal void OnProjectContextChanged(object sender, ProjectContextEventArgs e)
        {
            var context = e.Context;

            if (context == null)
            {
                return;
            }

            ProjectContextChanged?.Invoke(this, e);
        }
コード例 #3
0
        private void OnDependenciesChanged(object sender, DependenciesChangedEventArgs e)
        {
            var nowait = SubmitTreeUpdateAsync(
                (treeSnapshot, configuredProjectExports, cancellationToken) =>
            {
                var dependenciesNode = treeSnapshot.Value.Tree;
                dependenciesNode     = CreateOrUpdateSubTreeProviderNode(dependenciesNode,
                                                                         e.Provider,
                                                                         changes: e.Changes,
                                                                         cancellationToken: cancellationToken,
                                                                         catalogs: e.Catalogs);

                ProjectContextChanged?.Invoke(this, new ProjectContextEventArgs(this));

                return(Task.FromResult(new TreeUpdateResult(dependenciesNode, false, e.DataSourceVersions)));
            });
        }
        private void OnDependenciesChanged(object sender, DependenciesChangedEventArgs e)
        {
            var nowait = SubmitTreeUpdateAsync(
                (treeSnapshot, configuredProjectExports, cancellationToken) =>
            {
                var dependenciesNode = treeSnapshot.Value.Tree;
                dependenciesNode     = CreateOrUpdateSubTreeProviderNode(dependenciesNode,
                                                                         e.Provider,
                                                                         changes: e.Changes,
                                                                         cancellationToken: cancellationToken,
                                                                         catalogs: e.Catalogs);

                ProjectContextChanged?.Invoke(this, new ProjectContextEventArgs(this));

                // Note: temporary workaround to prevent data sources being out of sync is send null always,
                // this would stop error dialog, however subscribers could not check for Dependencies tree changes
                // until real fix is checked it (its fine since there probably should not be any at the moment).
                return(Task.FromResult(new TreeUpdateResult(dependenciesNode, false, null /*e.DataSourceVersions*/)));
            });
        }