You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
5.5 KiB
118 lines
5.5 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Web;
|
|
|
|
namespace FangYar.WebUI.WebCommon
|
|
{
|
|
/// <summary>
|
|
/// 后台线程处理程序
|
|
/// </summary>
|
|
public class WebThreadUtil
|
|
{
|
|
/// <summary>
|
|
/// 后台线程开关控制:true、线程正常运行;false、线程停止;
|
|
/// </summary>
|
|
public static bool threadSwitch = true;
|
|
/// <summary>
|
|
/// 缓存当前日期是否已经执行
|
|
/// </summary>
|
|
private static Dictionary<string, bool> dicDayCache = new Dictionary<string, bool>();
|
|
|
|
/// <summary>
|
|
/// 初始化启动线程
|
|
/// </summary>
|
|
public static void InitStart()
|
|
{
|
|
new Thread(() =>
|
|
{
|
|
|
|
try
|
|
{
|
|
FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = "初始化后台线程并运行", msgType = FangYar.Common.EnumLogMsgTypeEnum.Info, path = "ThreadLog" });
|
|
|
|
while (threadSwitch)
|
|
{
|
|
try
|
|
{
|
|
|
|
// 获取当前时间
|
|
var dtm = DateTime.Now;
|
|
|
|
var dayStr = dtm.ToString("yyyy-MM-dd");
|
|
//判断当天任务是否已经执行
|
|
if (!dicDayCache.Keys.Contains(dayStr))
|
|
{
|
|
//当天任务尚未执行
|
|
|
|
// 凌晨三点
|
|
if (dtm.Hour == 03)
|
|
{
|
|
// 执行三点数据更新任务
|
|
new Thread(() =>
|
|
{
|
|
try
|
|
{
|
|
// 更新西藏总队机关勤务大队车辆状态
|
|
string sqlStr = " UPDATE tbl_sys_car SET ISAPPLY='0',ISRUN='0' WHERE ORG_ID='734389c7ae364584aea9918693bba3de' and DEPT_ID='0192a6228fca4ed2bea225ad3bbf0dc9' ";
|
|
var num = FangYar.Common.MySqlHelper.Execute(sqlStr);
|
|
|
|
string str = "更新西藏总队车辆状态信息Sql: " + sqlStr;
|
|
FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo()
|
|
{
|
|
message = str,
|
|
msgType = FangYar.Common.EnumLogMsgTypeEnum.Info,
|
|
path = "ThreadLog"
|
|
});
|
|
str = "更新西藏总队车辆状态更新数据: " + num;
|
|
FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo()
|
|
{
|
|
message = str,
|
|
msgType = FangYar.Common.EnumLogMsgTypeEnum.Info,
|
|
path = "ThreadLog"
|
|
});
|
|
|
|
dicDayCache.Add(dayStr, true);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string str = "凌晨三点定时任务执行异常:" + ex;
|
|
FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo()
|
|
{
|
|
message = str,
|
|
msgType = FangYar.Common.EnumLogMsgTypeEnum.Error,
|
|
path = "ThreadLog"
|
|
});
|
|
}
|
|
|
|
}).Start();
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string str = "后台线程内部循环处理异常:" + ex;
|
|
FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = str, msgType = FangYar.Common.EnumLogMsgTypeEnum.Error, path = "ThreadLog" });
|
|
}
|
|
FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = "后台线程运行", msgType = FangYar.Common.EnumLogMsgTypeEnum.Info, path = "ThreadLog" });
|
|
// 间隔一分钟执行
|
|
Thread.Sleep(1000 * 60 * 10);
|
|
}
|
|
FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = "后台线程退出", msgType = FangYar.Common.EnumLogMsgTypeEnum.Info, path = "ThreadLog" });
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
string str = "后台线程处理异常:" + ex;
|
|
FangYar.Common.MyLogHelper.WriteMsg(new FangYar.Common.LogInfoMo() { message = str, msgType = FangYar.Common.EnumLogMsgTypeEnum.Error, path = "ThreadLog" });
|
|
}
|
|
|
|
}).Start();
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|