在Global中使用线程隔时执行一项任务

GLOBAL中线程的应用(书中学习,整理了一下),以下是过5分钟删除一张表的记录
using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
using DataBase;
using System.Data.SqlClient;
using System.Web.Security;
using System.IO ;
using System.Threading;
namespace FreightCom
{
 /// <summary>
 /// Global 的摘要说明。
 /// </summary>
 public class Global : System.Web.HttpApplication
 {
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.IContainer components = null;
  private OnLineUser ou=new OnLineUser();
  private UserLoginInfo Login=new UserLoginInfo();
  public Global()
  {
   InitializeComponent();
  } 
  
  protected void Application_Start(Object sender, EventArgs e)
  {
   SchedulerAgent.StartAgent();
  }
 
  protected void Session_Start(Object sender, EventArgs e)
  {
  
  }

  protected void Application_BeginRequest(Object sender, EventArgs e)
  {
   
  }

  protected void Application_EndRequest(Object sender, EventArgs e)
  {

  }

  protected void Application_AuthenticateRequest(Object sender, EventArgs e)
  {
   
  }

  protected void Application_Error(Object sender, EventArgs e)
  {

  }

  protected void Session_End(Object sender, EventArgs e)
  {

  }

  protected void Application_End(Object sender, EventArgs e)
  {
   SchedulerAgent.Stop();
  }
   
  #region Web 窗体设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.components = new System.ComponentModel.Container();
  }
  #endregion
 }

 public interface ISchedulerJob
 {
  void Execute();
 }

 public class SchedulerConfiguration
 {
  private int sleepInterval;
  private ArrayList jobs=new ArrayList();
  public int SleepInterval
  {
   get{return sleepInterval;}
  }
  public ArrayList Jobs
  {
   get {return jobs;}
  }
  public SchedulerConfiguration(int newSleepInterval)
  {
   sleepInterval=newSleepInterval;
  }
 }
 
 public class Scheduler
 {
  private SchedulerConfiguration configuration = null;
  public Scheduler(SchedulerConfiguration config)
  {
   configuration=config;
  }
  public void Start()
  {
   while(true)
   {
    try
    {
     foreach(ISchedulerJob job in configuration .Jobs)
     {
      job.Execute();
     }
    
    }
    catch{}
    finally
    {
     Thread.Sleep(configuration.SleepInterval);
    }
   }
  }
 }
 public class SchedulerAgent
 {
  private static System.Threading.Thread schedulerThread=null;
  public static void StartAgent()
  {
   SchedulerConfiguration config=new SchedulerConfiguration(1000*300);//设置时间,此处为5分钟
   config.Jobs.Add(new AlertJob());
   Scheduler scheduler=new Scheduler(config);
   System.Threading.ThreadStart myThreadStart=new System.Threading.ThreadStart(scheduler.Start);
   schedulerThread=new System.Threading.Thread(myThreadStart);
   schedulerThread.Start();
  }
  public static void Stop()
  {
   if(null!=schedulerThread)
   {
    schedulerThread.Abort();
   }
  }
 }

 public class AlertJob:ISchedulerJob
 {
  private OnLineUser ou=new OnLineUser();
  public void Execute()
  {
   ou.UserDelOnline();//一个删除的方法
  }
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值