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


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

     }

    }



  • 相关阅读:
    【leetcode】1009. 十进制整数的反码
    【leetcode】1446. 连续字符
    __getattr__在python2.x与python3.x中的区别及其对属性截取与代理类的影响
    Python 中异常嵌套
    python 变量搜寻顺序法则LEGB之E注意事项
    %%的一个应用
    python中__str__与__repr__
    052-180
    052-177
    052-176
  • 原文地址:https://www.cnblogs.com/ghd258/p/253299.html
Copyright © 2020-2023  润新知