private async void Reload() { Diag.ThreadPrint("Reload start"); await LoadBalanceDates(); Diag.ThreadPrint("Reload end"); }
private async Task LoadBalanceDates_old2() { var ts = TaskScheduler.FromCurrentSynchronizationContext(); Diag.ThreadPrint("Load start"); base.IsBusy = true; var tf = new TaskFactory(ts); var target = new ActionBlock <BalanceDate>(async a => { await tf.StartNew(() => { balanceDates.GetOrAdd(a.BalanceDateId, a); base.DataList.Add(new BalanceDateItemViewModel(a)); //Diag.ThreadPrint("In target. Account={0}", a.Name); }); }, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = 1 }); balanceDates.Clear(); base.DataList.Clear(); Diag.ThreadPrint("Load - before repo"); await this.balanceDateRepository.PostList(target); await target.Completion; Diag.ThreadPrint("Load - after repo. qty={0}", balanceDates.Count); base.IsBusy = false; Diag.ThreadPrint("Load end"); }
public async void Open() { Diag.ThreadPrint("Open start"); await LoadBalanceDates(); Diag.ThreadPrint("Open end"); }
private async Task LoadBalanceDates() { Diag.ThreadPrint("Load start"); base.IsBusy = true; var target = new ActionBlock <BalanceDate>(a => { balanceDates.GetOrAdd(a.BalanceDateId, a); base.DataList.Add(new BalanceDateItemViewModel(a)); //Diag.ThreadPrint("In target. Account={0}", a.Name); }, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = 1 }); balanceDates.Clear(); base.DataList.Clear(); Diag.ThreadPrint("Load - before repo"); await this.balanceDateRepository.PostList(target).ConfigureAwait(false); Diag.ThreadPrint("Load - after repo. qty={0}", balanceDates.Count); await target.Completion.ConfigureAwait(false); Diag.ThreadPrint("Load - after target completion. qty={0}", balanceDates.Count); base.IsBusy = false; Diag.ThreadPrint("Load end"); }
public async void Open() { Diag.ThreadPrint("Open start"); await LoadBankAccounts(); Diag.ThreadPrint("Open end"); }
private async Task LoadBankAccounts_ok() { Diag.ThreadPrint("Load start"); base.IsBusy = true; var target = new ActionBlock <BankAccount>(a => { bankAccounts.GetOrAdd(a.BankAccountId, a); Diag.ThreadPrint("In target. Account={0}", a.Name); }, new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = 4 }); bankAccounts.Clear(); Diag.ThreadPrint("Load - before repo"); await this.bankAccountRepository.PostList(target); Diag.ThreadPrint("Load - after repo. qty={0}", bankAccounts.Count); base.DataList.Clear(); Diag.ThreadPrint("Load - after clear"); if (bankAccounts != null) { Diag.ThreadPrint("Load - before populate"); bankAccounts.Values.ToList().ForEach(a => { base.DataList.Add(new BankAccountItemViewModel(a)); }); Diag.ThreadPrint("Load - after populate"); } base.IsBusy = false; Diag.ThreadPrint("Load end"); }
private async void Reload() { Diag.ThreadPrint("Reload start"); await LoadBankAccounts(); Diag.ThreadPrint("Reload end"); }
public async Task PostList(ITargetBlock <Core.Entities.BalanceDate> target) { Diag.ThreadPrint("PostList - start"); var transform = new TransformBlock <BalanceDate, Core.Entities.BalanceDate>(ef => mapper.Map <Core.Entities.BalanceDate>(ef), new ExecutionDataflowBlockOptions() { MaxDegreeOfParallelism = 4 }); transform.LinkTo(target, new DataflowLinkOptions() { PropagateCompletion = true }); await Task.Run(() => { Diag.ThreadPrint("PostList - task start"); using (FinanceEntities context = factory.CreateContext()) { (from b in context.BalanceDates .Include(a => a.BalanceDateBankAccounts) .Include("BalanceDateBankAccounts.BankAccount") .Include("BalanceDateBankAccounts.BankAccount.Bank") select b).AsParallel().ForAll(ef => transform.Post(ef)); //await transform.Completion; //transform.Completion.ContinueWith(t => //{ // if (t.IsFaulted) target.Fault(t.Exception); // else // { // Diag.ThreadPrint("PostList - task set target complete"); // target.Complete(); // } //}); transform.Complete(); } Diag.ThreadPrint("PostList - task end"); }).ConfigureAwait(false); Diag.ThreadPrint("PostList - end"); }