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

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

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

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航