using System; using System.Threading.Tasks; using System.Windows.Controls; namespace SourceGit.UI { /// /// General waiting dialog. /// public partial class Waiting : UserControl { /// /// Constructor. /// public Waiting() { InitializeComponent(); } /// /// Show this dialog. /// /// /// public static void Show(Git.Repository repo, Action job) { var dialog = new Waiting(); var popup = App.Launcher.GetPopupManager(repo); popup?.Show(dialog); popup?.Lock(); Task.Run(() => { job.Invoke(); dialog.Dispatcher.Invoke(() => { popup?.Close(true); }); }); } } }