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
parent
commit
9448ef8a91
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 15
      src/Headless/Avalonia.Headless/HeadlessUnitTestSession.cs

15
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;

Loading…
Cancel
Save