public Task Trigger(AixScheduleTaskInfo taskInfo, TimeSpan delay)
        {
            if (OnHandleMessage == null)
            {
                return(Task.CompletedTask);
            }
            //把线程队列引用过来,根据id进入不同的线程队列,保证串行执行

            // _logger.LogDebug($"执行定时任务:{taskInfo.Id},{taskInfo.TaskName},{taskInfo.ExecutorParam}");

            _taskExecutor.GetSingleThreadTaskExecutor(taskInfo.Id).Schedule(async(state) =>
            {
                var innerTaskInfo = (AixScheduleTaskInfo)state;
                int logId         = 0;
                try
                {
                    logId = await SaveLog(innerTaskInfo);
                    await OnHandleMessage(new ScheduleTaskContext
                    {
                        LogId       = logId,
                        TaskId      = innerTaskInfo.Id,
                        TaskName    = innerTaskInfo.TaskName,
                        TaskGroup   = innerTaskInfo.TaskGroup,
                        TaskContent = innerTaskInfo.TaskContent
                    });
                    await UpdateTriggerCode(logId, OPStatus.Success, "success");
                }
                catch (OperationCanceledException ex)
                {
                    _logger.LogError(ex, "Aix.ScheduleTask任务取消");
                    await UpdateTriggerCode(logId, OPStatus.Fail, ex.Message);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, $"Aix.ScheduleTask定时任务执行出错 {innerTaskInfo.Id},{innerTaskInfo.TaskName},{innerTaskInfo.TaskContent}");
                    await UpdateTriggerCode(logId, OPStatus.Fail, ex.Message);
                }
            }, taskInfo, delay);

            return(Task.CompletedTask);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="list"></param>
 /// <param name="asyncExecute">是否异步执行</param>
 /// <returns></returns>
 private async Task ProcessList(StreamEntry[] list, bool asyncExecute)
 {
     foreach (var item in list)
     {
         if (_isStart == false)
         {
             return;                   //及时关闭
         }
         JobData jobData = ParseJobData(item);
         if (asyncExecute)
         {
             //相同routeKey的任务进入同一个线程处理
             _taskExecutor.GetSingleThreadTaskExecutor(jobData.RouteKey).Execute(async(state) =>  //进入本地多线程执行器中
             {
                 var thisObj = (WorkerProcess)state;
                 await thisObj.HandleWrap(item, jobData);
             }, this);
         }
         else
         {
             await HandleWrap(item, jobData);
         }
     }
 }