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 2. IThreadHandler接口 C# Code: /// <summary> /// 多线程处理程序接口 /// </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 4. 任务管理器ThreadHandler注册处理程序 C# Code: //MPC付款预算进度同步 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) 扫一扫加微信
参考文档:
C# WebService异步处理/异步调用详解 CSFramework.WebApi框架快速搭建后端服务支持APP、B/S、C/S、微信小程序、公众号、Web客户端 关于CSFramework.WebApi框架NuGet程序包版本升级版本统一问题 C#异步操作等待窗体,异步多线程处理数据通用界面(frmThreadOperating) C#多线程异步处理数据通用界面窗体(frmThreadOperating) CSFramework.WebApi后端框架Log日志配置详解 使用WebApi框架开发微信小程序后端程序详细设计说明书模板docx文件 VS编译的程序运行发现界面大小错位(界面自适应问题) VS运行WebApplication网站程序提示“ID为13316的进程当前未运行。” ASP.NET WebApi框架异步实现MultipartContent方式上传文件 WebApi 未能加载文件或程序集“System.Web.Http.WebHost,System.Web.Cors" VS编译错误:已导入一个具有相同标识"System.Net.Http,Version=2.2.29"的程序集。请尝试移除其中一个重复的引用。 未能加载文件或程序集“xxxx.Web.UI”或它的某一个依赖项。系统找不到指定的文件。 原创:SQLJOB作业自动备份数据库并自动清除备份历史记录 IIS承载的WCF服务,配置.svc文件页面的MIME类型及处理程序映射
其它资料:
什么是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内容管理系统 | |