public override async Task ExecuteAsynchronously(object parameter)
        {
            var vm = (MainWindowViewModel)parameter;
            Func <IProgress <int>, CancellationToken, Task <int> > loadFilesAction = ((progress, token) => MatchInvoices(vm.Aging, vm.Tolerance, vm.SelectedRegions.Keys.ToArray(), vm.Progress, token));
            CancellationTokenSource timerTokenSource = new CancellationTokenSource();

            Execution = new NotifyTaskCompletion <int>(loadFilesAction(vm.Progress, new CancellationToken()));
            RaiseCanExecuteChanged();
            await Execution.TaskCompletion;

            RaiseCanExecuteChanged();
            int d = Execution.Result;
        }
示例#2
0
        public override async Task ExecuteAsynchronously(object parameter)
        {
            var vm = (MainWindowViewModel)parameter;
            Func <IProgress <int>, CancellationToken, Task <int> > loadFilesAction = ((progress, token) => LoadFiles(vm.DailyReportFilePath, vm.UnallocatedCashReportFilePath, progress, token));
            CancellationTokenSource timerTokenSource            = new CancellationTokenSource();
            Action <IProgress <int>, CancellationToken> action2 = ((progress, token) => ProgressUpdateByTime(progress, token));
            Task timerTask = Task.Run(() => action2(vm.Progress, timerTokenSource.Token), timerTokenSource.Token);

            Execution = new NotifyTaskCompletion <int>(loadFilesAction(vm.Progress, new CancellationToken()));
            RaiseCanExecuteChanged();
            await Execution.TaskCompletion;

            timerTokenSource.Cancel();
            timerTask.Wait();
            RaiseCanExecuteChanged();
            int d = Execution.Result;
        }