| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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());
- }
- }
- }
|