Packman.InstallablePackage.DownloadFiles C# (CSharp) Метод

DownloadFiles() приватный Метод

private DownloadFiles ( string downloadDir, IEnumerable files ) : List
downloadDir string
files IEnumerable
Результат List
        List<Task> DownloadFiles(string downloadDir, IEnumerable<string> files)
        {
            var list = new List<Task>();

            foreach (string fileName in files)
            {
                try
                {
                    string url = string.Format(UrlFormat, Name, Version, fileName);
                    var localFile = new FileInfo(Path.Combine(downloadDir, fileName));

                    localFile.Directory.Create();

                    using (WebClient client = new WebClient())
                    {
                        var task = client.DownloadFileTaskAsync(url, localFile.FullName);
                        list.Add(task);
                    }
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.Write(ex);
                }
            }

            return list;
        }

Usage Example

Пример #1
0
        private async Task CopyPackageContent(InstallablePackage entry, InstallSettings settings)
        {
            string cachePath = Environment.ExpandEnvironmentVariables(Defaults.CachePath);
            string versionDir = Path.Combine(cachePath, Provider.Name, entry.Name, entry.Version);

            await entry.DownloadFiles(versionDir);

            await Task.Run(() =>
            {
                try
                {
                    foreach (string file in entry.Files)
                    {
                        string cleanFile = file.Replace("/", "\\");
                        string src = Path.Combine(versionDir, cleanFile);
                        string dest = Path.Combine(settings.InstallDirectory, cleanFile);

                        string dir = Path.GetDirectoryName(dest);
                        Directory.CreateDirectory(dir);

                        OnCopying(src, dest);
                        File.Copy(src, dest, true);
                        OnCopied(src, dest);
                    }
                }
                catch (Exception)
                {
                    try
                    {
                        Directory.Delete(versionDir, true);
                    }
                    catch
                    {
                    }
                }
            });
        }