Browse Source
Fix hang if exception is thrown during headless session app construction (#21688)
pull/21693/head
Thad House
3 months ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with
17 additions and
8 deletions
-
src/Headless/Avalonia.Headless/HeadlessUnitTestSession.cs
|
|
@ -96,9 +96,18 @@ public sealed class HeadlessUnitTestSession : IDisposable, IAsyncDisposable |
|
|
using var globalCts = token.Register(s => ((CancellationTokenSource)s!).Cancel(), cts, true); |
|
|
using var globalCts = token.Register(s => ((CancellationTokenSource)s!).Cancel(), cts, true); |
|
|
using var localCts = cancellationToken.Register(s => ((CancellationTokenSource)s!).Cancel(), cts, true); |
|
|
using var localCts = cancellationToken.Register(s => ((CancellationTokenSource)s!).Cancel(), cts, true); |
|
|
|
|
|
|
|
|
var application = _isolated |
|
|
IDisposable application = null!; |
|
|
? EnsureIsolatedApplication() |
|
|
try |
|
|
: EnsureSharedApplication(); |
|
|
{ |
|
|
|
|
|
application = _isolated |
|
|
|
|
|
? EnsureIsolatedApplication() |
|
|
|
|
|
: EnsureSharedApplication(); |
|
|
|
|
|
} |
|
|
|
|
|
catch (Exception ex) |
|
|
|
|
|
{ |
|
|
|
|
|
tcs.TrySetException(ex); |
|
|
|
|
|
return; // Exit the dispatcher action if application initialization fails
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
bool shouldCancel = false; |
|
|
bool shouldCancel = false; |
|
|
Exception? caught = null; |
|
|
Exception? caught = null; |
|
|
|