UploadTask.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using DaJiaoYan.Models;
  2. using System.Collections.Generic;
  3. namespace DaJiaoYan.Services
  4. {
  5. internal class UploadTask
  6. {
  7. private static Dictionary<string, UploadTaskInfo> _infos = new Dictionary<string, UploadTaskInfo>();
  8. public delegate void DeleNewUploadTask(string id);
  9. public delegate void DeleIncreaseScanTask(string id, int cnt = 1);
  10. public delegate void DeleIncreaseUploadTask(string id, int cnt = 1);
  11. public delegate UploadTaskInfo DeleGetUploadTask(string id);
  12. public delegate void DeleFinishUploadTask(string id);
  13. public delegate void DeleFinishScanTask(string id);
  14. public static DeleNewUploadTask deleNewUploadTask = NewUploadTask;
  15. public static DeleIncreaseScanTask deleIncreaseScanTask = IncreaseScanTask;
  16. public static DeleIncreaseUploadTask deleIncreaseUploadTask = IncreaseUploadTask;
  17. public static DeleGetUploadTask deleGetUploadTask = GetUploadTaskInfo;
  18. public static DeleFinishScanTask deleFinishUploadTask = FinishUploadTask;
  19. public static DeleFinishScanTask deleFinishScanTask = FinishScanTask;
  20. private static void NewUploadTask(string id)
  21. {
  22. lock (_infos)
  23. {
  24. if (!_infos.ContainsKey(id))
  25. {
  26. _infos.Add(id, new UploadTaskInfo(id));
  27. }
  28. }
  29. }
  30. private static void IncreaseScanTask(string id, int cnt = 1)
  31. {
  32. lock (_infos)
  33. {
  34. if (_infos.ContainsKey(id))
  35. {
  36. _infos[id].ScanCount += cnt;
  37. }
  38. }
  39. }
  40. private static void IncreaseUploadTask(string id, int cnt = 1)
  41. {
  42. lock (_infos)
  43. {
  44. if (_infos.ContainsKey(id))
  45. {
  46. _infos[id].UploadCount += cnt;
  47. }
  48. }
  49. }
  50. private static UploadTaskInfo GetUploadTaskInfo(string id)
  51. {
  52. UploadTaskInfo info;
  53. lock (_infos)
  54. {
  55. if (_infos.ContainsKey(id))
  56. {
  57. info = _infos[id].Copy();
  58. }
  59. else
  60. {
  61. info = new UploadTaskInfo(id);
  62. }
  63. }
  64. return info;
  65. }
  66. private static void FinishUploadTask(string id)
  67. {
  68. lock (_infos)
  69. {
  70. if (_infos.ContainsKey(id))
  71. {
  72. _infos[id].UploadFinished = 1;
  73. }
  74. }
  75. }
  76. private static void FinishScanTask(string id)
  77. {
  78. lock (_infos)
  79. {
  80. if (_infos.ContainsKey(id))
  81. {
  82. _infos[id].ScanFinished = 1;
  83. }
  84. }
  85. }
  86. }
  87. }