.NET技术支持者

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::
在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();
  }

   
  
Web 窗体设计器生成的代码
 }


 
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();
//一个删除的方法
  }

 }

}



posted on 2005-10-12 20:01  LDAR泄漏检测与修复  阅读(936)  评论(1编辑  收藏  举报