private void Button_Click_TaskDel(object sender, RoutedEventArgs e) { List <TaskInfo> del = new List <TaskInfo>(); foreach (TaskInfo item in taskList.SelectedItems) { //删除任务 del.Add(item); } foreach (var item in del) { TaskMange.Remove(item); } }
void OnTaskChange() { Dispatcher.Invoke(() => { taskHeader.Header = TaskMange.GetHeadStr(); }); }
public async void AddQueue() { string file; Console.WriteLine($"队列数量:{queue.Count}"); if (!queue.TryDequeue(out file)) { adding = false; return; } var f = new System.IO.FileInfo(file); try { if (!f.Exists) { return; } foreach (var item in ignore) { if (file.Contains(item)) { return; } } var ext = ExtList.Where(o => o.IsEnabled && o.Name == f.Extension).ToList(); if (ext.Count == 0) { return; } if (!f.FullName.StartsWith(MainWindow.localRootDir)) { throw new Exception("根目录异常"); } var task = new TaskInfo { Type = TaskType.步, FullName = f.FullName, Name = f.Name }; using (var stream = Util.GetFileStream(f.FullName)) { task.sha1 = Util.sha1(stream); task.size = stream.Length; } if (serverFileCache.ContainsKey(file) && serverFileCache[file] == $"{task.sha1};{task.size}") { return; } string fid = "root"; if (f.Directory.FullName != MainWindow.localRootDir) { var relativeFile = f.Directory.FullName.Substring(MainWindow.localRootDir.Length + 1).Replace("\\", "/") + "/"; //dir 所在相对当前路径的目录 格式为 一层目录(aaa/) 二层目录(aaa/bbb/) if (!ParentIDs.ContainsKey(relativeFile)) { var ms = Regex.Matches(relativeFile, "([^/]+?)/"); var u = new upload(); foreach (Match m in ms) { Console.WriteLine($"同步创建目录[{relativeFile}]:{m.Groups[1].Value}"); fid = await u.getfolder(fid, m.Groups[1].Value); } ParentIDs[relativeFile] = fid; } fid = ParentIDs[relativeFile]; } task.parent_file_id = fid; var r = await new file().search(fid, f.Name); if (!r.Yes) { throw new Exception(r.Error); } if (r.obj.items.Count > 0) { foreach (var item in r.obj.items) { serverFileCache[file] = $"{task.sha1};{task.size}"; Config_Save(); if (item.content_hash == task.sha1 && item.size == task.size) { return; } } } invoke(() => { TaskMange.Add(task); }); } catch (Exception ex) { invoke(() => { TaskMange.Add(new TaskInfo { Type = TaskType.步, FullName = f.FullName, Status = 3, Name = f.Name + $"[{ex.Error()}]" }); }); } finally { _ = Task.Run(AddQueue); } }