From 3ee3e713a58b055b2ecdd4b3e9dab97cf4aa761f Mon Sep 17 00:00:00 2001 From: rabbitism Date: Fri, 2 Feb 2024 20:35:11 +0800 Subject: [PATCH] fix: fix close from non-ui thread. --- src/Ursa/Controls/Dialog/DialogControl.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Ursa/Controls/Dialog/DialogControl.cs b/src/Ursa/Controls/Dialog/DialogControl.cs index 0534370..96a3b5e 100644 --- a/src/Ursa/Controls/Dialog/DialogControl.cs +++ b/src/Ursa/Controls/Dialog/DialogControl.cs @@ -5,6 +5,7 @@ using Avalonia.Controls.Primitives; using Avalonia.Input; using Avalonia.Input.GestureRecognizers; using Avalonia.Interactivity; +using Avalonia.Threading; using Ursa.Common; namespace Ursa.Controls; @@ -91,7 +92,10 @@ public class DialogControl: ContentControl public Task ShowAsync(CancellationToken? token = default) { var tcs = new TaskCompletionSource(); - token?.Register(CloseDialog); + token?.Register(() => + { + Dispatcher.UIThread.Invoke(CloseDialog); + }); void OnCloseHandler(object sender, object? args) { if (args is T result)