Browse Source

[WASM] Ensure sync context is set before running dispatcher messages (#21462)

* ensure sync context is set before running dispatcher messages

* update dispatcher test
release/12.0
Emmanuel Hansen 4 months ago
committed by Julien Lebosquain
parent
commit
f9a42a252a
  1. 3
      src/Avalonia.Base/Threading/Dispatcher.Invoke.cs
  2. 3
      tests/Avalonia.Base.UnitTests/DispatcherTests.cs

3
src/Avalonia.Base/Threading/Dispatcher.Invoke.cs

@ -649,7 +649,8 @@ public partial class Dispatcher
{ {
try try
{ {
action(arg); using (AvaloniaSynchronizationContext.Ensure(this, (DispatcherPriority)priority))
action(arg);
} }
catch (Exception ex) when (ExceptionFilter(ex)) catch (Exception ex) when (ExceptionFilter(ex))
{ {

3
tests/Avalonia.Base.UnitTests/DispatcherTests.cs

@ -448,6 +448,7 @@ public partial class DispatcherTests
}, DispatcherPriority.Background); }, DispatcherPriority.Background);
disp.MainLoop(CancellationToken.None); disp.MainLoop(CancellationToken.None);
disp.Send(_ => DumpCurrentPriority(), DispatcherPriority.Send);
disp.Invoke(DumpCurrentPriority, DispatcherPriority.Send, TestContext.Current.CancellationToken); disp.Invoke(DumpCurrentPriority, DispatcherPriority.Send, TestContext.Current.CancellationToken);
disp.Invoke(() => disp.Invoke(() =>
{ {
@ -458,7 +459,7 @@ public partial class DispatcherTests
Assert.Equal( Assert.Equal(
new[] new[]
{ {
DispatcherPriority.Normal, DispatcherPriority.Loaded, DispatcherPriority.Input, DispatcherPriority.Background, DispatcherPriority.Normal, DispatcherPriority.Loaded, DispatcherPriority.Input, DispatcherPriority.Background, DispatcherPriority.Send,
DispatcherPriority.Send, DispatcherPriority.Send, DispatcherPriority.Send, DispatcherPriority.Send,
}, },
priorities); priorities);

Loading…
Cancel
Save