TryGetDocumentTracker() 공개 추상적인 메소드

public abstract TryGetDocumentTracker ( ITextBuffer textBuffer, Microsoft.VisualStudio.Editor.Razor.VisualStudioDocumentTracker &documentTracker ) : bool
textBuffer ITextBuffer
documentTracker Microsoft.VisualStudio.Editor.Razor.VisualStudioDocumentTracker
리턴 bool
예제 #1
0
        public override void OnTextViewOpened(ITextView textView, IEnumerable <ITextBuffer> subjectBuffers)
        {
            if (textView == null)
            {
                throw new ArgumentNullException(nameof(textView));
            }

            if (subjectBuffers == null)
            {
                throw new ArgumentNullException(nameof(subjectBuffers));
            }

            _foregroundDispatcher.AssertForegroundThread();

            foreach (var textBuffer in subjectBuffers)
            {
                if (!textBuffer.IsRazorBuffer())
                {
                    continue;
                }

                if (!IsSupportedProject(textBuffer))
                {
                    return;
                }

                if (!_editorFactoryService.TryGetDocumentTracker(textBuffer, out var documentTracker) ||
                    !(documentTracker is DefaultVisualStudioDocumentTracker tracker))
                {
                    Debug.Fail("Tracker should always be available given our expectations of the VS workflow.");
                    return;
                }

                tracker.AddTextView(textView);

                if (documentTracker.TextViews.Count == 1)
                {
                    tracker.Subscribe();
                }
            }
        }
예제 #2
0
        public async override Task OnTextViewOpenedAsync(ITextView textView, IEnumerable <ITextBuffer> subjectBuffers)
        {
            if (textView is null)
            {
                throw new ArgumentNullException(nameof(textView));
            }

            if (subjectBuffers is null)
            {
                throw new ArgumentNullException(nameof(subjectBuffers));
            }

            _joinableTaskContext.AssertUIThread();

            foreach (var textBuffer in subjectBuffers)
            {
                if (!textBuffer.IsRazorBuffer())
                {
                    continue;
                }

                if (!_editorFactoryService.TryGetDocumentTracker(textBuffer, out var documentTracker) ||
                    !(documentTracker is DefaultVisualStudioDocumentTracker tracker))
                {
                    Debug.Fail("Tracker should always be available given our expectations of the VS workflow.");
                    return;
                }

                tracker.AddTextView(textView);

                if (documentTracker.TextViews.Count == 1)
                {
                    // tracker.Subscribe() accesses the project snapshot manager, which needs to be run on the
                    // project snapshot manager's specialized thread.
                    await _projectSnapshotManagerDispatcher.RunOnDispatcherThreadAsync(() => tracker.Subscribe(), CancellationToken.None).ConfigureAwait(false);
                }
            }
        }