2020using Microsoft . CodeAnalysis . Navigation ;
2121using Microsoft . CodeAnalysis . PooledObjects ;
2222using Microsoft . CodeAnalysis . StackTraceExplorer ;
23+ using Microsoft . CodeAnalysis . Threading ;
2324using Microsoft . VisualStudio . Text . Classification ;
24- using Roslyn . Utilities ;
2525
2626namespace Microsoft . VisualStudio . LanguageServices . StackTraceExplorer ;
2727
@@ -44,12 +44,14 @@ internal sealed class StackFrameViewModel(
4444 private TextDocument ? _cachedDocument ;
4545 private int _cachedLineNumber ;
4646
47+ private readonly CancellationSeries _navigationCancellation = new ( threadingContext . DisposalToken ) ;
48+
4749 public override bool ShowMouseOver => true ;
4850
4951 public void NavigateToClass ( )
5052 {
51- var cancellationToken = _threadingContext . DisposalToken ;
52- Task . Run ( ( ) => NavigateToClassAsync ( cancellationToken ) , cancellationToken ) . ReportNonFatalErrorAsync ( ) ;
53+ var cancellationToken = _navigationCancellation . CreateNext ( ) ;
54+ _ = NavigateToClassAsync ( cancellationToken ) . ReportNonFatalErrorUnlessCancelledAsync ( cancellationToken ) ;
5355 }
5456
5557 public async Task NavigateToClassAsync ( CancellationToken cancellationToken )
@@ -77,8 +79,8 @@ await location.TryNavigateToAsync(
7779
7880 public void NavigateToSymbol ( )
7981 {
80- var cancellationToken = _threadingContext . DisposalToken ;
81- Task . Run ( ( ) => NavigateToMethodAsync ( cancellationToken ) , cancellationToken ) . ReportNonFatalErrorAsync ( ) ;
82+ var cancellationToken = _navigationCancellation . CreateNext ( ) ;
83+ _ = NavigateToMethodAsync ( cancellationToken ) . ReportNonFatalErrorUnlessCancelledAsync ( cancellationToken ) ;
8284 }
8385
8486 public async Task NavigateToMethodAsync ( CancellationToken cancellationToken )
@@ -95,8 +97,8 @@ public async Task NavigateToMethodAsync(CancellationToken cancellationToken)
9597
9698 public void NavigateToFile ( )
9799 {
98- var cancellationToken = _threadingContext . DisposalToken ;
99- Task . Run ( ( ) => NavigateToFileAsync ( cancellationToken ) , cancellationToken ) . ReportNonFatalErrorAsync ( ) ;
100+ var cancellationToken = _navigationCancellation . CreateNext ( ) ;
101+ _ = NavigateToFileAsync ( cancellationToken ) . ReportNonFatalErrorUnlessCancelledAsync ( cancellationToken ) ;
100102 }
101103
102104 public async Task NavigateToFileAsync ( CancellationToken cancellationToken )
0 commit comments