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()); }