コード例 #1
0
        private async void btnImport_Click(object sender, EventArgs e)
        {
            IProgress <decimal> p = new Progress <decimal>(ImportProgressUpdate);

            btnImport.Enabled = false;
            await Task.Run(() =>
            {
                var list = new List <Transaction>();
                for (int i = 0; i < Data.Count; i++)
                {
                    list.Add(Data[i].AsTransaction());

                    p.Report((decimal)i / Data.Count * 100.0m);
                }

                return(list);
            })
            .ContinueWith(f =>
            {
                return(ContextHelpers.AddTransactions(f.Result.ToArray()));
            }).Unwrap()
            .ContinueWith(v =>
            {
                btnImport.Enabled       = true;
                this.lblPercentage.Text = string.Empty;
                this.progressBar1.Value = 0;
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }