fix: fix close from non-ui thread.

This commit is contained in:
rabbitism
2024-02-02 20:35:11 +08:00
parent 97d641f8a1
commit 3ee3e713a5

View File

@@ -5,6 +5,7 @@ using Avalonia.Controls.Primitives;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Input.GestureRecognizers; using Avalonia.Input.GestureRecognizers;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Threading;
using Ursa.Common; using Ursa.Common;
namespace Ursa.Controls; namespace Ursa.Controls;
@@ -91,7 +92,10 @@ public class DialogControl: ContentControl
public Task<T?> ShowAsync<T>(CancellationToken? token = default) public Task<T?> ShowAsync<T>(CancellationToken? token = default)
{ {
var tcs = new TaskCompletionSource<T?>(); var tcs = new TaskCompletionSource<T?>();
token?.Register(CloseDialog); token?.Register(() =>
{
Dispatcher.UIThread.Invoke(CloseDialog);
});
void OnCloseHandler(object sender, object? args) void OnCloseHandler(object sender, object? args)
{ {
if (args is T result) if (args is T result)