Beispiel #1
0
        protected override async Task OnStartAsync()
        {
            var parents = new List<AsyncTask>();
            var files = await Account.GetFilesAsync(Folder, CancellationTokenSource.Token);
            foreach (var task in files.Select(f => new DeleteFileTask(Account, AccountName, 0, null, f)))
            {
                parents.Add(task);
                AddTask(task);
            }
            var dirs = await Account.GetSubfoldersAsync(Folder, CancellationTokenSource.Token);
            foreach (var task in dirs.Select(d => new DeleteFolderTask(Account, AccountName, Priority, null, d)))
            {
                parents.Add(task);
                AddTask(task);
            }
            
            var lastTask = new DeleteEmptyFolderTask(Account, AccountName, Priority, parents.ToArray(), Folder);
            AddTask(lastTask);

            await Task.Run(async () =>
            {
                while (lastTask.State == AsyncTaskState.Running || lastTask.State == AsyncTaskState.Waiting)
                    await Task.Delay(500);
                State = lastTask.State;
                OnStateChanged();
            });
        }
Beispiel #2
0
        protected override async Task OnStartAsync()
        {
            var parents = new List <AsyncTask>();
            var files   = await Account.GetFilesAsync(Folder, CancellationTokenSource.Token);

            foreach (var task in files.Select(f => new DeleteFileTask(Account, AccountName, 0, null, f)))
            {
                parents.Add(task);
                AddTask(task);
            }
            var dirs = await Account.GetSubfoldersAsync(Folder, CancellationTokenSource.Token);

            foreach (var task in dirs.Select(d => new DeleteFolderTask(Account, AccountName, Priority, null, d)))
            {
                parents.Add(task);
                AddTask(task);
            }

            var lastTask = new DeleteEmptyFolderTask(Account, AccountName, Priority, parents.ToArray(), Folder);

            AddTask(lastTask);

            await Task.Run(async() =>
            {
                while (lastTask.State == AsyncTaskState.Running || lastTask.State == AsyncTaskState.Waiting)
                {
                    await Task.Delay(500);
                }
                State = lastTask.State;
                OnStateChanged();
            });
        }