当前位置:  编程技术>.net/c#/asp.net

c#定时器和global实现自动job示例

    来源: 互联网  发布时间:2014-10-28

    本文导语:  一、创建一个cs文件,定义Time 对象 代码如下: public class WebTimer_AutoRepayment{    static WebTimer_AutoRepayment()    {        _WebTimerTask = new WebTimer_AutoRepayment();    }    ///     /// 实例化    ///     ///     public static WebTimer_Aut...

一、创建一个cs文件,定义Time 对象

代码如下:

 public class WebTimer_AutoRepayment
{
    static WebTimer_AutoRepayment()
    {
        _WebTimerTask = new WebTimer_AutoRepayment();
    }
    ///
    /// 实例化
    ///
    ///
    public static WebTimer_AutoRepayment Instance()
    {
        return _WebTimerTask;
    }

    ///
    /// 实际执行的方法
    ///
    private void ExecuteMain()
    {
        //定义你自己要执行的Job
        ChinaPnrInterfaces.AutoSendRepaymentNotice();//定时发送短信提醒的方法
    }
    #region Timer 计时器定义
    ///
    /// 调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。
    ///
    private static int Period = 1 * 60 * 60 * 1000;
    ///
    /// 调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。
    ///
    private static int dueTime = 3 * 1000;//三分钟后启动
    ///
    ///第几次执行
    ///
    private long Times = 0;
    ///
    /// 实例化一个对象
    ///
    private static readonly WebTimer_AutoRepayment _WebTimerTask = null;
    private Timer WebTimerObj = null;
    ///
    /// 是否正在执行中
    ///
    private int _IsRunning;
    ///
    /// 开始
    ///
    public void Start()
    {
        if (WebTimerObj == null)
        {
            DateTime now = DateTime.Now;
            int minutes = now.Minute;
            if (minutes >= 55)
            {
                dueTime = 0;//立即启动
            }
            else
            {
                dueTime = (55 - minutes) * 60 * 1000;//到某个时间点的55分钟启动
            }
            WebTimerObj = new Timer(new TimerCallback(WebTimer_Callback), null, dueTime, Period);
        }
    }
    ///
    /// WebTimer的主函数
    ///
    ///
    private void WebTimer_Callback(object sender)
    {
        try
        {
            if (Interlocked.Exchange(ref _IsRunning, 1) == 0)
            {
                ExecuteMain();
                Times++;
                Times = (Times % 100000);
            }
        }
        catch
        {
        }
        finally
        {
            Interlocked.Exchange(ref _IsRunning, 0);
        }
    }
    ///
    /// 停止
    ///
    public void Stop()
    {
        if (WebTimerObj != null)
        {
            WebTimerObj.Dispose();
            WebTimerObj = null;
        }
    }
    #endregion
}

二、在Global文件中调用所定义的方法

代码如下:

 void Application_Start(object sender, EventArgs e)
    {
        //在应用程序启动时运行的代码
        WebTimer_AutoRepayment.Instance().Start(); //
    }

    void Application_End(object sender, EventArgs e)
    {
        //在应用程序关闭时运行的代码
        WebTimer_AutoRepayment.Instance().Stop();//
    }

    
 
 

您可能感兴趣的文章:

  • C# Timer定时器控件运行时需要修改系统时间的问题
  • c# 在windows服务中 使用定时器实例代码
  • C# 定时器定时更新的简单实例
  • C#中定时器控件Timer的简单用法
  • C#中定时器System.Timers.Timer类的例子
  • C#中Timer定时器控件的使用方法
  • C#中timer类定时器控件的应用实例
  • C# timer 定时器类的用法举例
  • c#定时器使用示例详解
  • C#进度条ProgressBar和定时器Timer控件的应用举例
  • C#中使用System.Timers.Timer定时器控件的例子
  • C#中Timer定时器控件实例与原理解析
  • C#各种定时器Timer类的区别与使用介绍
  • C#中定时器控件Timer学习参考
  • tcp重传定时器,怎么实现的啊? iis7站长之家
  • Jquery定时器的简单示例
  • jQuery定时器插件 jQuery Timers应用示例
  • python定时器使用示例分享
  • c语言定时器示例分享
  • asp.net Timer定时器用法示例
  • python单线程实现多个定时器示例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux 多个定时器 几乎同时到时 , 部分定时器信号 丢失的问题.
  • 定时器的问题请教
  • Linux用户态可以通过同一段程序创建多个定时器么?
  • 请问如何实现多个并行的定时器?
  • 想做个定时器,不知道怎么做?
  • 请问linux下的定时器怎么使用??******************************
  • 定时器如何销毁?
  • linux 定时器销毁
  • 请教关于unix中定时器的语法
  • linux中的串口通信判断一帧数据是否传输完整时,用定时器检查前后两帧数据的间隔时间,该用什么定时函数,有详细代码最好,谢谢!
  • tcp重传定时器,怎么实现的啊?
  • Linux 提供的基于文件描述符的定时器接口
  • 如何实现多定时器?
  • linux下如何设置高精度定时器?
  • linux定时器!
  • 定时器与getchar()的问题??奇怪!
  • 多定时器问题
  • 关于select定时器的问题
  • 定时器问题
  • 有关定时器在多核CPU上运行的一个问题?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3