From 6ad66d0368e674cb9bcf3cb8c780c3cbb6a77210 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Tue, 25 Nov 2025 00:00:02 +1000 Subject: [PATCH] handle exceptions on cancellation --- .../Features/CodeEditor/SharpIdeCodeEdit.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs index 3228469..552d889 100644 --- a/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs +++ b/src/SharpIDE.Godot/Features/CodeEditor/SharpIdeCodeEdit.cs @@ -106,9 +106,13 @@ public partial class SharpIdeCodeEdit : CodeEdit var newCt = _solutionAlteredCancellationTokenSeries.CreateNext(); var documentSyntaxHighlighting = _roslynAnalysis.GetDocumentSyntaxHighlighting(_currentFile, newCt); var razorSyntaxHighlighting = _roslynAnalysis.GetRazorDocumentSyntaxHighlighting(_currentFile, newCt); - await Task.WhenAll(documentSyntaxHighlighting, razorSyntaxHighlighting); + await Task.WhenAll(documentSyntaxHighlighting, razorSyntaxHighlighting).WaitAsync(newCt).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing); + if (newCt.IsCancellationRequested) return; + var documentDiagnosticsTask = _roslynAnalysis.GetDocumentDiagnostics(_currentFile, newCt); await this.InvokeAsync(async () => SetSyntaxHighlightingModel(await documentSyntaxHighlighting, await razorSyntaxHighlighting)); - var documentDiagnostics = await _roslynAnalysis.GetDocumentDiagnostics(_currentFile, newCt); + await ((Task)documentDiagnosticsTask).ConfigureAwait(ConfigureAwaitOptions.SuppressThrowing); + if (newCt.IsCancellationRequested) return; + var documentDiagnostics = await documentDiagnosticsTask; await this.InvokeAsync(() => SetDiagnostics(documentDiagnostics)); }