一、方案说明
利用Web站点,定时执行一些任务
二、涉及技术点:
多线程(Task Thread)
三、具体编码如下;
1、Web启动调用WebJob工具类,执行任务
/// <summary>
/// 启动应用程序
/// </summary>
protected void Application_Start()
{
try
{
//启动定时任务
IOTJob.initTasks();
}
catch (Exception ex)
{
logInfo.Error("Application_Start-启动定时任务发生异常:" + ex.StackTrace);
}
}
2、静态工具类WebJob
public static class WebJob
{
static readonly Log _logInfo = LogFactory.GetLogger("WebJob");
public static void initTasks()
{
_logInfo.Info($"定时任务初始化");
try
{
//核心代码
foreach (var item in data)
{
var updateTask = Task.Factory.StartNew(() =>
{
while (true)
{
//任务频率
Thread.Sleep(item.FREQUENCY.Value*1000);
_logInfo.Info($"{item.PARAMETER}开始执行任务");
Task.Factory.StartNew(() =>
{
//do something
}).ContinueWith(t =>
{
_logInfo.Info($"{item.PARAMETER}执行结束");
});
}
});
}
}
catch (Exception ex)
{
_logInfo.Info($"加载任务错误:" + JsonConvert.SerializeObject(ex));
}
}
}