Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
 void OnTaskChange()
 {
     Dispatcher.Invoke(() => { taskHeader.Header = TaskMange.GetHeadStr(); });
 }
Exemplo n.º 3
0
        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);
            }
        }