CSFramework.WebApi时钟定时作业异步处理程序(IThreadHandler接口)实现
作者:作者不详  发布日期:2020/03/27 21:43:09
  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



3. WebApi框架提供的任务管理器ThreadHandler类


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)


ASP.NET WebApi快速开发框架|MVC框架|APP微信小程序后端框架|服务端框架-标准版V1.0

C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

上一篇 下一篇