Example #1
0
        private async Task ShowFolderSaveDialogAsync(ResourceItem resourceItem)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                var progress = CreateAndShowDownloadFolderForm();

                Action <bool, ResourceItem, int, int> notify = (success, item, index, total) =>
                {
                    int pct = (int)(100.0 * index / total);
                    progress.lblPct.Text        = $@"{pct}%";
                    progress.progressBar1.Value = pct;
                };

                ResourceLoadStatus status = ResourceLoadStatus.Unknown;
                try
                {
                    status = await _client.DownloadFolderAsync(resourceItem, folderBrowserDialog1.SelectedPath, notify, _cancelToken);

                    progress.lblPct.Text        = "100%";
                    progress.progressBar1.Value = 100;

                    await Task.Delay(TimeSpan.FromMilliseconds(500), _cancelToken);
                }
                catch (Exception)
                {
                }
                finally
                {
                    if (status == ResourceLoadStatus.Ok)
                    {
                        Log($"Folder '{resourceItem.DisplayName}' saved to '{folderBrowserDialog1.SelectedPath}'");
                    }
                    else
                    {
                        Log($"Folder '{resourceItem.DisplayName}' was not saved correctly : {status}");
                    }

                    progress.Close();
                    InitCancellationTokenSource();
                }
            }
        }