Files
2025-11-20 15:56:40 +08:00

122 lines
3.9 KiB
C#

using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using BLWWS_BLL.Job;
using NLog;
using Quartz;
using Quartz.Impl;
using LogManager = NLog.LogManager;
namespace BLWWS_BLL
{
public class GlobalCache
{
public static ISchedulerFactory sf = null;
public static IScheduler sched = null;
public static ConcurrentQueue<string> GlobalCacheData = new ConcurrentQueue<string>();
public static System.Timers.Timer timer;
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
public static void Init()
{
_logger.Error("初始化");
if (timer == null)
{
timer = new System.Timers.Timer();
timer.Interval = 500;
timer.Elapsed -= Timer_Elapsed;
timer.Elapsed += Timer_Elapsed;
timer.Start();
}
}
private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
if (GlobalCache.GlobalCacheData.TryDequeue(out string data))
{
if (!string.IsNullOrEmpty(data))
{
string strResult = Tools.PostWebRequest(data, "");//调用人脸机接口
_logger.Error("人脸 后台:" + strResult);
}
}
}
catch (Exception ex)
{
_logger.Error("人脸 后台异常:" + ex.Message);
}
}
public static void Add(string jobData)
{
if (timer == null)
{
timer = new System.Timers.Timer();
timer.Interval = 500;
timer.Elapsed -= Timer_Elapsed;
timer.Elapsed += Timer_Elapsed;
timer.Start();
}
else
{
}
_logger.Error("后台来了任务");
GlobalCacheData.Enqueue(jobData);
//if (sf == null)
//{
// Init();
//}
//DateTimeOffset runTime = DateTimeOffset.UtcNow.AddSeconds(2);
//string JobName = "Job" + System.Guid.NewGuid().ToString("N");
//string TriggerName = "Trigger" + System.Guid.NewGuid().ToString("N");
//IJobDetail job = JobBuilder.Create<HttpJob>()
// .WithIdentity(JobName, "group1")
// .UsingJobData("JobData", jobData)
// .Build();
//// Trigger the job to run on the next round minute
//ITrigger trigger = TriggerBuilder.Create()
// .WithIdentity(TriggerName, "group1")
// .StartAt(runTime)
// .Build();
//GlobalCache.sched.ScheduleJob(job, trigger);
}
public static void TaskAdd(string jobData)
{
if (sched != null)
{
DateTimeOffset runTime = DateTimeOffset.UtcNow.AddSeconds(2);
string JobName = "Job" + System.Guid.NewGuid().ToString("N");
string TriggerName = "Trigger" + System.Guid.NewGuid().ToString("N");
IJobDetail job = JobBuilder.Create<HttpJob>()
.WithIdentity(JobName, "group1")
.UsingJobData("JobData", jobData)
.Build();
// Trigger the job to run on the next round minute
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity(TriggerName, "group1")
.StartAt(runTime)
.Build();
GlobalCache.sched.ScheduleJob(job, trigger);
}
else
{
LogHelper.WriteLog("初始化");
}
}
}
}