using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InABox.Avalonia.Dialogs; public static class ProgressDialog { public static async Task Execute(string message, Action work) { var dialog = new MessageDialogViewModel() .Message(message); var task = Task.Run(work).ContinueWith(task => { dialog.Close(MessageDialogResult.None); }, TaskScheduler.FromCurrentSynchronizationContext()); await dialog.Display(); } public static async Task Execute(string message, Func work) { var dialog = new MessageDialogViewModel() .Message(message); var task = Task.Run(work).ContinueWith(task => { dialog.Close(MessageDialogResult.None); return task.Result; }); await dialog.Display(); return task.Result; } }