软测单独项目
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

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