using DaJiaoYan.Models; using System.Collections.Generic; namespace DaJiaoYan.Services { internal class UploadTask { private static Dictionary _infos = new Dictionary(); public delegate void DeleNewUploadTask(string id); public delegate void DeleIncreaseScanTask(string id, int cnt = 1); public delegate void DeleIncreaseUploadTask(string id, int cnt = 1); public delegate UploadTaskInfo DeleGetUploadTask(string id); public delegate void DeleFinishUploadTask(string id); public delegate void DeleFinishScanTask(string id); public static DeleNewUploadTask deleNewUploadTask = NewUploadTask; public static DeleIncreaseScanTask deleIncreaseScanTask = IncreaseScanTask; public static DeleIncreaseUploadTask deleIncreaseUploadTask = IncreaseUploadTask; public static DeleGetUploadTask deleGetUploadTask = GetUploadTaskInfo; public static DeleFinishScanTask deleFinishUploadTask = FinishUploadTask; public static DeleFinishScanTask deleFinishScanTask = FinishScanTask; private static void NewUploadTask(string id) { lock (_infos) { if (!_infos.ContainsKey(id)) { _infos.Add(id, new UploadTaskInfo(id)); } } } private static void IncreaseScanTask(string id, int cnt = 1) { lock (_infos) { if (_infos.ContainsKey(id)) { _infos[id].ScanCount += cnt; } } } private static void IncreaseUploadTask(string id, int cnt = 1) { lock (_infos) { if (_infos.ContainsKey(id)) { _infos[id].UploadCount += cnt; } } } private static UploadTaskInfo GetUploadTaskInfo(string id) { UploadTaskInfo info; lock (_infos) { if (_infos.ContainsKey(id)) { info = _infos[id].Copy(); } else { info = new UploadTaskInfo(id); } } return info; } private static void FinishUploadTask(string id) { lock (_infos) { if (_infos.ContainsKey(id)) { _infos[id].UploadFinished = 1; } } } private static void FinishScanTask(string id) { lock (_infos) { if (_infos.ContainsKey(id)) { _infos[id].ScanFinished = 1; } } } } }