public static T Execute <T>(string title, Func <Action <long>, Action <long>, T> action, UiProgressUnits units = UiProgressUnits.Items) { using (UiProgressWindow window = new UiProgressWindow(title, units)) { Task <T> task = Task.Run(() => ExecuteFunction(window, action)); window.ShowDialog(); return(task.Result); } }
public static void Execute(string title, Action <Action <long>, Action <long> > action, UiProgressUnits units = UiProgressUnits.Items) { using (UiProgressWindow window = new UiProgressWindow(title, units)) { Task.Run(() => ExecuteAction(window, action)); window.ShowDialog(); } }
public static void Execute(string title, IProgressSender progressSender, Action action, UiProgressUnits units = UiProgressUnits.Items) { using (UiProgressWindow window = new UiProgressWindow(title, units)) { 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, UiProgressUnits units = UiProgressUnits.Items) { using (UiProgressWindow window = new UiProgressWindow(title, units)) { progressSender.ProgressTotalChanged += window.SetTotal; progressSender.ProgressIncremented += window.Incremented; Task <T> task = Task.Run(() => ExecuteFunction(window, func)); window.ShowDialog(); return(task.Result); } }
public UiProgressWindow(string title, UiProgressUnits units = UiProgressUnits.Items) { _units = units; #region Construct Height = 72; Width = 320; WindowStartupLocation = WindowStartupLocation.CenterScreen; WindowStyle = WindowStyle.None; UiGrid root = UiGridFactory.Create(3, 1); root.SetRowsHeight(GridLength.Auto); root.Margin = new Thickness(5); UiTextBlock titleTextBlock = UiTextBlockFactory.Create(title); { titleTextBlock.VerticalAlignment = VerticalAlignment.Center; titleTextBlock.HorizontalAlignment = HorizontalAlignment.Center; root.AddUiElement(titleTextBlock, 0, 0); } _progressBar = UiProgressBarFactory.Create(); { root.AddUiElement(_progressBar, 1, 0); } _progressTextBlock = UiTextBlockFactory.Create("100%"); { _progressTextBlock.VerticalAlignment = VerticalAlignment.Center; _progressTextBlock.HorizontalAlignment = HorizontalAlignment.Center; root.AddUiElement(_progressTextBlock, 1, 0); } _elapsedTextBlock = UiTextBlockFactory.Create(Lang.Measurement.Elapsed + ": 00:00"); { _elapsedTextBlock.HorizontalAlignment = HorizontalAlignment.Left; root.AddUiElement(_elapsedTextBlock, 2, 0); } _processedTextBlock = UiTextBlockFactory.Create("0 / 0"); { _processedTextBlock.HorizontalAlignment = HorizontalAlignment.Center; root.AddUiElement(_processedTextBlock, 2, 0); } _remainingTextBlock = UiTextBlockFactory.Create(Lang.Measurement.Remaining + ": 00:00"); { _remainingTextBlock.HorizontalAlignment = HorizontalAlignment.Right; root.AddUiElement(_remainingTextBlock, 2, 0); } Content = root; #endregion Loaded += OnLoaded; Closing += OnClosing; _timer = new Timer(500); _timer.Elapsed += OnTimer; }