private async void MakeRequest(string swap, string loot) { Cursor = Cursors.WaitCursor; await Task.Run(() => { SwapBL.Start(swap); }); await Task.Run(() => { lootItems = LootItems.FromJson(GetJSONData.GetLootItems(loot)); }); Task.WaitAll(); toolStripStatusLabel1.Text = "Swap.gg total item: " + SwapBL.swapItems.Result.Count; toolStripStatusLabel2.Text = "Loot.farm total item: " + lootItems.Count; await Task.Run(() => { var s = DataSource.GetDataSource(SwapBL, lootItems); if (s != dataGridView1.DataSource) { BeginInvoke(new MethodInvoker(() => dataGridView1.DataSource = s)); } }); Cursor = Cursors.Default; }