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