我酷下载
您的位置:首页-> 技术文章-> -> .NET-> 在Global中使用线程隔时执行一项任务

阅读排行




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

作者未知 来源未知 加入时间:2005-9-22 人气:108
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();//一个删除的方法
  }
}
}


相关文章

相关软件

联系我们 广告服务 友情链接 版权说明 软件发布 下载帮助

CopyRight
2005-2016 www.5qcn.net All Rights Reserved 版权所有 【我酷】下载