Ejemplo n.º 1
0
        /// <summary>
        /// TODO
        /// </summary>
        /// <param name="item"></param>
        /// <param name="form"></param>
        /// <returns></returns>
        public async Task DeleteFile(FSItem item, Tools.ProgressForm form)
        {
            form.Activity = Utility.ShortenString(item.Path, 20);
            await amazon.Nodes.Trash(item.Id, item.IsDir);

            CacheStorage.RemoveItem(item);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// TODO
        /// </summary>
        /// <param name="item"></param>
        /// <param name="dest"></param>
        /// <param name="form"></param>
        /// <param name="wh"></param>
        /// <param name="progress"></param>
        /// <param name="totalsize"></param>
        /// <returns></returns>
        public async Task <long> DownloadFile(FSItem item, string dest, Tools.ProgressForm form, EventWaitHandle wh, long progress, long totalsize)
        {
            if (item.IsDir)
            {
                form.Activity = string.Format("{0} {1})", "Creating directory", Utility.ShortenString(dest, 20));
                Directory.CreateDirectory(dest);
                return(progress);
            }

            using (var fs = new FileStream(dest, FileMode.Create))
            {
                await amazon.Files.Download(item.Id, fs, null, null, 4096, (long position) =>
                {
                    wh.WaitOne();

                    if (form.IsClosed)
                    {
                        fs.Dispose();
                        try
                        {
                            File.Delete(dest);
                        }
                        catch { }
                        throw new TaskCanceledException();
                    }

                    form.Activity = Progress.GetActivityProgress(dest, position, item.Length, progress + position, totalsize);

                    form.SetProgressValue(progress + position, totalsize);

                    return(position);
                });

                return(progress + item.Length);
            }
        }