Tasks.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using SKMC.Api.Process.Control;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace SKMC.Api.Common.Tasks
  8. {
  9. /// <summary>
  10. /// 任务运行相关扩展方法
  11. /// </summary>
  12. public class Tasks
  13. {
  14. private static readonly ILogger log = LogFactory.Get();
  15. /// <summary>
  16. /// 多任务运行, 异常时弹窗告警
  17. /// </summary>
  18. /// <param name="taskWait">true表示执行任务后等待任务完成, false表示不等待(可以由返回的tasks自行处理)</param>
  19. /// <param name="actions"></param>
  20. /// <returns></returns>
  21. public static List<Task> Run(bool taskWait = true, params Action[] actions)
  22. {
  23. var tasks = new List<Task>();
  24. foreach (var item in actions)
  25. {
  26. var task = Task.Run(() =>
  27. {
  28. try
  29. {
  30. item.Invoke();
  31. }
  32. catch (Exception e)
  33. {
  34. ProcessExceptions.WrapThrows(e);
  35. }
  36. });
  37. tasks.Add(task);
  38. }
  39. if (taskWait) Task.WaitAll(tasks.ToArray());
  40. return tasks;
  41. }
  42. /// <summary>
  43. /// 多任务运行, 异常时不弹窗只打日志
  44. /// </summary>
  45. /// <param name="taskWait">true表示执行任务后等待任务完成, false表示不等待(可以由返回的tasks自行处理)</param>
  46. /// <param name="actions"></param>
  47. /// <returns></returns>
  48. public static List<Task> RunNoAlarm(bool taskWait = true, params Action[] actions)
  49. {
  50. var tasks = new List<Task>();
  51. foreach (var item in actions)
  52. {
  53. var task = Task.Run(() =>
  54. {
  55. try
  56. {
  57. item.Invoke();
  58. }
  59. catch (Exception e)
  60. {
  61. log.Error($"Tasks Run Error:{e.Message}", e);
  62. }
  63. });
  64. tasks.Add(task);
  65. }
  66. if (taskWait) Task.WaitAll(tasks.ToArray());
  67. return tasks;
  68. }
  69. public static void WaitAll(List<Task> tasks)
  70. {
  71. Task.WaitAll(tasks.ToArray());
  72. }
  73. }
  74. }