示例#1
0
        public static async Task <T> Run <T>(Func <ProgressController, Task <T> > callback, ProgressDialogOptions options, string dialogIdentifier)
        {
            if (options == null)
            {
                options = new ProgressDialogOptions();
            }

            var     controller = new ProgressController(options);
            Session session;

            if (dialogIdentifier != null)
            {
                session = controller.Dialog.ShowTracked(dialogIdentifier, 250d);
            }
            else
            {
                session = new MaterialWindow(controller.Dialog).ShowTracked();
            }

            T result;

            try
            {
                result = await Task.Run(() => callback(controller));
            }
            finally
            {
                session.Close(true);
            }

            return(result);
        }
示例#2
0
 public static Task <T> Run <T>(Func <ProgressController, Task <T> > callback, ProgressDialogOptions options, Session session) => Run(callback, options, (session as WindowSession)?.DialogIdentifier);
示例#3
0
 public static Task Run(Func <ProgressController, Task> callback, ProgressDialogOptions options, Session session)
 {
     return(Run(callback, options, (session as WindowSession)?.DialogIdentifier));
 }
示例#4
0
 public static Task <T> Run <T>(Func <ProgressController, Task <T> > callback, ProgressDialogOptions options) => Run(callback, options, (string)null);
示例#5
0
 public static Task Run(Func <ProgressController, Task> callback, ProgressDialogOptions options)
 {
     return(Run(callback, options, (string)null));
 }