private async void RefreshData() { refreshTile.Visible = false; loadProgressLabel.Visible = true; loadProgressBar.Visible = true; loadProgressBar.Value = 0; loadProgressBar.Maximum = _instance.Folders.Count + 1; loadProgressBar.Step = 1; var progressList = new NeedBindingList(); var queuedList = new NeedBindingList(); var restList = new NeedBindingList(); var folders = _instance.Folders.ToList(); foreach (var folder in folders) { loadProgressLabel.Text = String.Format("Fetching information for folder [{0}]", folder.Id); loadProgressLabel.Refresh(); var result = await _instance.LoadNeededFiles(folder); foreach (var file in result.progress) { progressList.Add(new NeedBindingItem(file, folder)); } foreach (var file in result.queued) { queuedList.Add(new NeedBindingItem(file, folder)); } foreach (var file in result.rest) { restList.Add(new NeedBindingItem(file, folder)); } loadProgressBar.PerformStep(); } loadProgressLabel.Text = String.Format("Loading data into grid"); progressGrid.DataSource = progressList; queueGrid.DataSource = queuedList; restGrid.DataSource = restList; loadProgressBar.Visible = false; loadProgressLabel.Text = String.Format("{0} queued files found in {1} shared folders", progressList.Count + queuedList.Count + restList.Count, folders.Count); refreshTile.Visible = true; }