| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using SKMC.Api.Core.Exceptions;
- using SKMC.Api.Common.Logger;
- using System;
- using System.Collections.Generic;
- 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)
- {
- ExceptionWrapper.Throws(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());
- }
- }
- }
|