public static void Execute(string title, IProgressSender progressSender, Action action) { using (UiProgressWindow window = new UiProgressWindow(title)) { progressSender.ProgressTotalChanged += window.SetTotal; progressSender.ProgressIncremented += window.Incremented; Task.Run(() => ExecuteAction(window, action)); window.ShowDialog(); } }
public static T Execute <T>(string title, IProgressSender progressSender, Func <T> func) { using (UiProgressWindow window = new UiProgressWindow(title)) { progressSender.ProgressTotalChanged += window.SetTotal; progressSender.ProgressIncremented += window.Incremented; Task <T> task = Task.Run(() => ExecuteFunction(window, func)); window.ShowDialog(); return(task.Result); } }