예제 #1
0
        public static Session StartWaitDialog(this IWaitDialogFactory factory, string waitCatption,
                                              WaitDialogProgressData initialProgress = null, TimeSpan delayToShow = default)
        {
            var instance           = factory.CreateInstance();
            var cancellationSource = new CancellationTokenSource();
            var progress           = new ProgressAdapter(instance, cancellationSource);
            var callback           = new CancellationCallback(cancellationSource);

            instance.StartWaitDialogWithCallback(waitCatption, initialProgress?.WaitMessage,
                                                 initialProgress?.ProgressText, initialProgress?.StatusBarText,
                                                 initialProgress != null && initialProgress.IsCancelable, (int)delayToShow.TotalSeconds, true, initialProgress?.TotalSteps ?? 0,
                                                 initialProgress?.CurrentStep ?? 0, callback);
            return(new Session(instance, progress, cancellationSource.Token, callback));
        }
예제 #2
0
        /// <summary>
        /// Starts the wait dialog and executes the task.
        /// </summary>
        /// <param name="factory">The factory.</param>
        /// <param name="asyncFunc">The asynchronous function.</param>
        /// <param name="waitCaption">The caption of the dialog.</param>
        /// <param name="initialProgress">The initial progress.</param>
        /// <param name="delayToShowDialog">The delay to show the dialog.</param>
        public static void StartWaitDialog(this IWaitDialogFactory factory,
                                           Func <IProgress <WaitDialogProgressData>, Task> asyncFunc, string waitCaption,
                                           WaitDialogProgressData initialProgress = null, TimeSpan delayToShowDialog = default(TimeSpan))
        {
            var instance = factory.CreateInstance();
            var session  = CreateSession(instance);

            instance.SetFunction(() => asyncFunc(session.Progress));
            instance.StartWaitDialogWithCallback(
                waitCaption,
                initialProgress?.WaitMessage,
                initialProgress?.ProgressText,
                initialProgress?.StatusBarText,
                initialProgress != null && initialProgress.IsCancelable,
                (int)delayToShowDialog.TotalSeconds,
                true, initialProgress?.TotalSteps ?? 0,
                initialProgress?.CurrentStep ?? 0,
                session.Callback);
        }
예제 #3
0
 /// <summary>
 /// Creates the instance of an <see cref="IWaitDialog"/>.
 /// </summary>
 /// <param name="factory">The factory.</param>
 /// <returns>The instance of the <see cref="IWaitDialog"/></returns>
 public static IWaitDialog CreateInstance(this IWaitDialogFactory factory)
 {
     Validate.IsNotNull(factory, nameof(factory));
     factory.CreateInstance(out var waitDialog);
     return(waitDialog);
 }