| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- using SKMC.Api.Common.Logger;
- using SKMC.Api.Process.Control;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace SKMC.Api.Common.Tasks
- {
- /// <summary>
- /// 任务运行相关扩展方法
- /// </summary>
- public class Tasks
- {
- private static readonly ILogger log = LogFactory.Get();
- /// <summary>
- /// 多任务运行, 异常时弹窗告警
- /// </summary>
- /// <param name="taskWait">true表示执行任务后等待任务完成, false表示不等待(可以由返回的tasks自行处理)</param>
- /// <param name="actions"></param>
- /// <returns></returns>
- public static List<Task> Run(bool taskWait = true, params Action[] actions)
- {
- var tasks = new List<Task>();
- foreach (var item in actions)
- {
- var task = Task.Run(() =>
- {
- try
- {
- item.Invoke();
- }
- catch (Exception e)
- {
- ProcessExceptions.WrapThrows(e);
- }
- });
- tasks.Add(task);
- }
- if (taskWait) Task.WaitAll(tasks.ToArray());
- return tasks;
- }
- /// <summary>
- /// 多任务运行, 异常时不弹窗只打日志
- /// </summary>
- /// <param name="taskWait">true表示执行任务后等待任务完成, false表示不等待(可以由返回的tasks自行处理)</param>
- /// <param name="actions"></param>
- /// <returns></returns>
- public static List<Task> RunNoAlarm(bool taskWait = true, params Action[] actions)
- {
- var tasks = new List<Task>();
- foreach (var item in actions)
- {
- var task = Task.Run(() =>
- {
- try
- {
- item.Invoke();
- }
- catch (Exception e)
- {
- log.Error($"Tasks Run Error:{e.Message}", e);
- }
- });
- tasks.Add(task);
- }
- if (taskWait) Task.WaitAll(tasks.ToArray());
- return tasks;
- }
- public static void WaitAll(List<Task> tasks)
- {
- Task.WaitAll(tasks.ToArray());
- }
- }
- }
|