CSFramework.WebApi时钟定时作业异步处理程序(IThreadHandler接口)实现
CSFramework.WebApi时钟定时作业异步处理程序(IThreadHandler接口)实现
需求介绍
后端服务器通常有定时发送消息的需求,如发送日报表,定时处理作业等。
CSFramewrok.WebApi后端框架提供定时处理任务机制满足用户需求。
下面详细讲解实现步骤:
1. 定义一个类,实现IThreadHandler接口。
C# Code:
using CSFramework.DB;
using FirsHaier.MPCClient;
using FirsHaier.WebApi.Core;
using FirsHaier.WebApi.DataAccess;
using FirsHaier.WebApi.Foundation;
using FirsHaier.WebApi.Models;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Timers;
namespace FirsHaier.WebApi.Commands
{
/// <summary>
/// CSFramework.WebApi定时作业异步处理程序(IThreadHandler接口)实现
/// </summary>
public class ThreadSync : IThreadHandler
{
private Hashtable _SendList = new Hashtable();//已处理记录
private Timer _Timer;
private string _SendMsgTime = "21:01";//每天同步时间
private int _Interval = 1000 * 60;//间隔1分钟(毫秒)
public ThreadSync()
{
//web.config配置,获取同步时间
_SendMsgTime = System.Configuration.ConfigurationManager.AppSettings["SyncTime"];
}
//启动时钟
public void Start()
{
_Timer = new Timer();
_Timer.Interval = _Interval;
_Timer.Elapsed += _Timer_Elapsed;
_Timer.Start();
}
//暂停时钟
public void Stop()
{
_Timer.Stop();
_Timer.Dispose();
}
private string _Key;
//时钟事件
private void _Timer_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
_Key = DateTime.Now.ToString("yyyyMMddHHmm");
if (_SendList.ContainsKey(_Key)) return;//当天已发送
if (_SendMsgTime != DateTime.Now.ToString("HH:mm")) return;//发送时间不匹配
_Timer.Stop();
LogManager.Log.Write("MPC-SYNC", "开始进行MPC付款预算状态同步....");
DateTime begin = DateTime.Now;
IDatabase db = DatabaseProvider.GetDatabase("Your Database");
db.GetTable("SELECT * FROM TBUSER");
//
//处理逻辑。。。。。。。。
//
_SendList.Add(_Key, _Key);//处理完毕,添加已处理标记
double second = (DateTime.Now - begin).TotalMilliseconds;
LogManager.Log.Write("MPC-SYNC", "同步结束,耗时(s):" + second.ToString());
_Timer.Start();
}
catch (Exception ex)
{
Log2Local.Instance.WriteInfo(ex.Message);
_Timer.Start();
}
}
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
using CSFramework.DB;
using FirsHaier.MPCClient;
using FirsHaier.WebApi.Core;
using FirsHaier.WebApi.DataAccess;
using FirsHaier.WebApi.Foundation;
using FirsHaier.WebApi.Models;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Timers;
namespace FirsHaier.WebApi.Commands
{
/// <summary>
/// CSFramework.WebApi定时作业异步处理程序(IThreadHandler接口)实现
/// </summary>
public class ThreadSync : IThreadHandler
{
private Hashtable _SendList = new Hashtable();//已处理记录
private Timer _Timer;
private string _SendMsgTime = "21:01";//每天同步时间
private int _Interval = 1000 * 60;//间隔1分钟(毫秒)
public ThreadSync()
{
//web.config配置,获取同步时间
_SendMsgTime = System.Configuration.ConfigurationManager.AppSettings["SyncTime"];
}
//启动时钟
public void Start()
{
_Timer = new Timer();
_Timer.Interval = _Interval;
_Timer.Elapsed += _Timer_Elapsed;
_Timer.Start();
}
//暂停时钟
public void Stop()
{
_Timer.Stop();
_Timer.Dispose();
}
private string _Key;
//时钟事件
private void _Timer_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
_Key = DateTime.Now.ToString("yyyyMMddHHmm");
if (_SendList.ContainsKey(_Key)) return;//当天已发送
if (_SendMsgTime != DateTime.Now.ToString("HH:mm")) return;//发送时间不匹配
_Timer.Stop();
LogManager.Log.Write("MPC-SYNC", "开始进行MPC付款预算状态同步....");
DateTime begin = DateTime.Now;
IDatabase db = DatabaseProvider.GetDatabase("Your Database");
db.GetTable("SELECT * FROM TBUSER");
//
//处理逻辑。。。。。。。。
//
_SendList.Add(_Key, _Key);//处理完毕,添加已处理标记
double second = (DateTime.Now - begin).TotalMilliseconds;
LogManager.Log.Write("MPC-SYNC", "同步结束,耗时(s):" + second.ToString());
_Timer.Start();
}
catch (Exception ex)
{
Log2Local.Instance.WriteInfo(ex.Message);
_Timer.Start();
}
}
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
2. IThreadHandler接口
3. WebApi框架提供的任务管理器ThreadHandler类
C# Code:
/// <summary>
/// 多线程处理程序接口
/// </summary>
public interface IThreadHandler
{
void Start();
void Stop();
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 多线程处理程序接口
/// </summary>
public interface IThreadHandler
{
void Start();
void Stop();
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
C# Code:
/// <summary>
/// 用户自定义多线程管理器
/// </summary>
public static class ThreadHandler
{
private static List<IThreadHandler> _List = new List<IThreadHandler>();
public static List<IThreadHandler> Handlers { get { return _List; } }
public static void Registe(IThreadHandler handler)
{
_List.Add(handler);
}
public static void Start()
{
foreach (IThreadHandler H in _List) H.Start();
}
public static void Stop()
{
foreach (IThreadHandler H in _List) H.Stop();
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 用户自定义多线程管理器
/// </summary>
public static class ThreadHandler
{
private static List<IThreadHandler> _List = new List<IThreadHandler>();
public static List<IThreadHandler> Handlers { get { return _List; } }
public static void Registe(IThreadHandler handler)
{
_List.Add(handler);
}
public static void Start()
{
foreach (IThreadHandler H in _List) H.Start();
}
public static void Stop()
{
foreach (IThreadHandler H in _List) H.Stop();
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
4. 任务管理器ThreadHandler注册处理程序
C# Code:
//MPC付款预算进度同步
ThreadHandler.Registe(new ThreadSync());
//启动线程
if (start && ThreadHandler.Handlers.Count > 0)
ThreadHandler.Start();
ThreadHandler.Registe(new ThreadSync());
//启动线程
if (start && ThreadHandler.Handlers.Count > 0)
ThreadHandler.Start();
ASP.NET WebApi快速开发框架|APP后端框架-标准版V1.0
适用开发:快速搭建APP、B/S、C/S、微信小程序、公众号、Web站点等后端应用服务程序。
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015+,C#语言
数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)
参考文档:
基于Web前端用户调用CSFramework.WebApi服务端登录登出接口实现
Web端使用VUE调用WebApi接口实现用户登录及采用Token方式数据交互
CSFramework.WebApi开发框架模拟Web用户端登录、调用WebApi接口增删改查数据
CSFramework.WebApi令牌管理器(Token Provider)实现添加、删除、刷新令牌过期控制
Winform调用WebApi接口实现增删改查CRUD实例源码
CSFramework.WebApi框架实现阿里云OSS上传、下载、删除文件功能
CSFramework.WebApi框架提供两种登录接口(PC端登录、APP登录)|C/S开发框架
Demo调用WebApi接口 | CSFramework.WebApi后端开发框架|C/S开发框架
CSFramework.WebApi后端框架提供两种接口调用方式|C/S开发框架
CSFramework.WebApi框架 | DoController | 通用接口控制器说明|C/S开发框架
开发框架旗舰版:数据库日志DBLog类实现ILogUserOperate接口设计
C#接口中多态的实现
C#实现接口的两种方式:显示实现和隐式实现接口
CSFramework.WebApi后端服务器框架:客户端调用WebApi接口方式(签名+Token令牌)
WebApi接口使用HttpGet方式实现接受实体类参数(原创)
平台建立WCF服务操作指引、三层源码+桥接接口实现
基于Web前端用户调用CSFramework.WebApi服务端登录登出接口实现
Web端使用VUE调用WebApi接口实现用户登录及采用Token方式数据交互
CSFramework.WebApi开发框架模拟Web用户端登录、调用WebApi接口增删改查数据
CSFramework.WebApi令牌管理器(Token Provider)实现添加、删除、刷新令牌过期控制
Winform调用WebApi接口实现增删改查CRUD实例源码
CSFramework.WebApi框架实现阿里云OSS上传、下载、删除文件功能
CSFramework.WebApi框架提供两种登录接口(PC端登录、APP登录)|C/S开发框架
Demo调用WebApi接口 | CSFramework.WebApi后端开发框架|C/S开发框架
CSFramework.WebApi后端框架提供两种接口调用方式|C/S开发框架
CSFramework.WebApi框架 | DoController | 通用接口控制器说明|C/S开发框架
开发框架旗舰版:数据库日志DBLog类实现ILogUserOperate接口设计
C#接口中多态的实现
C#实现接口的两种方式:显示实现和隐式实现接口
CSFramework.WebApi后端服务器框架:客户端调用WebApi接口方式(签名+Token令牌)
WebApi接口使用HttpGet方式实现接受实体类参数(原创)
平台建立WCF服务操作指引、三层源码+桥接接口实现
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服

