async public Task download(downloadUnit re) { WebClient wc = new WebClient(); try { wc.DownloadFile(re.url, re.savePath + "\\" + re.fileName); } catch (Exception e) { Console.WriteLine($"ну ты и {e.Message}"); //return false; } //return true; }
static void Main(string[] args) { telescope ts = new telescope(); while (true) { Console.Clear(); Console.WriteLine("1-> скачать файл.\n2-> журнал загрузок\n3-> журнал загрузок по меткам\n4-> управление загруженными файлами."); char mt = Console.ReadKey().KeyChar; Console.Clear(); switch (mt) { case '1': { Console.WriteLine("ссылка:"); string url = Console.ReadLine(); Console.WriteLine("название файла:"); string fileName = Console.ReadLine(); Console.WriteLine("место захоронения файла:"); string savePath = Console.ReadLine(); Console.WriteLine("метки (через запятую)(можно и без них):"); string data = Console.ReadLine(); string temple = string.Empty; List <string> tags = new List <string>(); for (int i = 0; i < data.Length; i++) { if (data[i] == ',' || i == data.Length) { tags.Add(temple); temple = string.Empty; } else if (data[i] == ' ') { ; } else { temple += data[i]; } } DateTime ae = DateTime.Now; downloadUnit ui = new downloadUnit(url, savePath, fileName, tags, ae); Console.Clear(); Task re = Task.Run(() => { ts.download(ui); Console.WriteLine("дело сделано."); ui.success = true; ts.units.Add(ui); }); Task.Run(() => { while (!re.IsCompleted) { bool pause = false; ConsoleKeyInfo key; key = Console.ReadKey(); if (key.Key == ConsoleKey.Spacebar) { if (pause == false) { re.Wait(); pause = true; } else { re = Task.Factory.StartNew(() => { ts.download(ui); Console.WriteLine("дело сделано."); ui.success = true; ts.units.Add(ui); }); pause = false; } } } }); Console.ReadKey(); } break; case '2': { Console.WriteLine("успешно:"); foreach (downloadUnit item in ts.units) { if (item.success == true) { Console.WriteLine($"{item.fileName} ({item.url}), {item.unl}"); } } Console.WriteLine("провалено:"); foreach (downloadUnit item in ts.units) { if (item.success == false) { Console.WriteLine($"{item.fileName} ({item.url}), {item.unl}"); } } Console.ReadKey(); } break; case '3': { Console.WriteLine("метки (через запятую):"); string income = Console.ReadLine(); List <string> vs = new List <string>(); string msg = string.Empty; for (int i = 0; i < income.Length; i++) { if (income[i] == ',' || i == income.Length) { vs.Add(msg); msg = string.Empty; } else if (income[i] == ' ') { ; } else { msg += income[i]; } } foreach (string item in vs) { foreach (downloadUnit obj in ts.units) { foreach (string sbj in obj.tags) { if (sbj == item) { Console.WriteLine($"{obj.fileName} ({obj.url}), {obj.unl}"); } } } } Console.ReadKey(); } break; case '4': { Console.WriteLine("работа с загрузками.\n"); List <string> weight = new List <string>(); foreach (downloadUnit unit in ts.units) { weight.Add($"{unit.savePath}\\{unit.fileName}"); } while (true) { int unl = graphicMenu.VerticalMenu(weight.ToArray()); if (unl == -2) { break; } #region newUnit string url = ts.units[unl].url; string savePath = ts.units[unl].savePath; string fileName = ts.units[unl].fileName; List <string> tags = ts.units[unl].tags; DateTime dv = ts.units[unl].unl; bool? success = ts.units[unl].success; #endregion Console.Clear(); FileInfo vh = new FileInfo(weight[unl]); Console.WriteLine("1-> переместить\n2-> переименовать\n3-> удалить"); char ch = Console.ReadKey().KeyChar; Console.Clear(); switch (ch) { case '1': { Console.WriteLine("новое место жительства:"); string path = Console.ReadLine(); File.Move(vh.FullName, path + "\\" + vh.Name); downloadUnit temp = new downloadUnit(url, path, fileName, tags, dv, success); ts.units[unl] = temp; Console.WriteLine("дело сделано."); } break; case '2': { Console.WriteLine("новое имя:"); string tempName = Console.ReadLine() + vh.Extension; string newName = vh.DirectoryName + "\\" + tempName; File.Move(vh.FullName, newName); downloadUnit temp = new downloadUnit(url, savePath, tempName, tags, dv, success); ts.units[unl] = temp; Console.WriteLine("дело сделано"); } break; case '3': { File.Delete(vh.FullName); ts.units.RemoveAt(unl); Console.WriteLine("дело сделано."); } break; } Console.Clear(); } } break; default: { Console.WriteLine("неправильно!"); } break; } } }