From f9a42a252aeda7f061d06b74558ab2521310f941 Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen Date: Thu, 4 Jun 2026 11:03:34 +0000 Subject: [PATCH] [WASM] Ensure sync context is set before running dispatcher messages (#21462) * ensure sync context is set before running dispatcher messages * update dispatcher test --- src/Avalonia.Base/Threading/Dispatcher.Invoke.cs | 3 ++- tests/Avalonia.Base.UnitTests/DispatcherTests.cs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.Base/Threading/Dispatcher.Invoke.cs b/src/Avalonia.Base/Threading/Dispatcher.Invoke.cs index 90167fa8a1..c2eba7e503 100644 --- a/src/Avalonia.Base/Threading/Dispatcher.Invoke.cs +++ b/src/Avalonia.Base/Threading/Dispatcher.Invoke.cs @@ -649,7 +649,8 @@ public partial class Dispatcher { try { - action(arg); + using (AvaloniaSynchronizationContext.Ensure(this, (DispatcherPriority)priority)) + action(arg); } catch (Exception ex) when (ExceptionFilter(ex)) { diff --git a/tests/Avalonia.Base.UnitTests/DispatcherTests.cs b/tests/Avalonia.Base.UnitTests/DispatcherTests.cs index 2efb648f4d..f3aaa0b6c2 100644 --- a/tests/Avalonia.Base.UnitTests/DispatcherTests.cs +++ b/tests/Avalonia.Base.UnitTests/DispatcherTests.cs @@ -448,6 +448,7 @@ public partial class DispatcherTests }, DispatcherPriority.Background); disp.MainLoop(CancellationToken.None); + disp.Send(_ => DumpCurrentPriority(), DispatcherPriority.Send); disp.Invoke(DumpCurrentPriority, DispatcherPriority.Send, TestContext.Current.CancellationToken); disp.Invoke(() => { @@ -458,7 +459,7 @@ public partial class DispatcherTests Assert.Equal( new[] { - DispatcherPriority.Normal, DispatcherPriority.Loaded, DispatcherPriority.Input, DispatcherPriority.Background, + DispatcherPriority.Normal, DispatcherPriority.Loaded, DispatcherPriority.Input, DispatcherPriority.Background, DispatcherPriority.Send, DispatcherPriority.Send, DispatcherPriority.Send, }, priorities);