public abstract TryGetDocumentTracker ( ITextBuffer textBuffer, Microsoft.VisualStudio.Editor.Razor.VisualStudioDocumentTracker &documentTracker ) : bool | ||
textBuffer | ITextBuffer | |
documentTracker | Microsoft.VisualStudio.Editor.Razor.VisualStudioDocumentTracker | |
리턴 | bool |
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(); } } }
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); } } }