zoukankan      html  css  js  c++  java
  • C# Global定时执行Global文件aTimer处理

        public class Global : System.Web.HttpApplication
        {
            private static event Action eventActions;
            /// <summary>
            ///  当前正在运行的异步线程池
            /// </summary>
            private static Dictionary<string, IAsyncResult> diyAsync = new Dictionary<string, IAsyncResult>();
            protected void Application_Start(object sender, EventArgs e)
            {
                eventActions += MyClass.Writer;//任务(可以处理多个方法)
                System.Timers.Timer aTimer = new System.Timers.Timer();
                aTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
                aTimer.Interval = 200;
                aTimer.Enabled = true;
            }
            /// <summary>
            /// 定时执行任务
            /// </summary>
            /// <param name="source"></param>
            /// <param name="e"></param>
            private static void OnTimedEvent(object source, ElapsedEventArgs e)
            {
                foreach (Action action in eventActions.GetInvocationList())
                {
                    try
                    {
                        if (diyAsync.Any(p => p.Key == action.Method.Name) && !diyAsync[action.Method.Name].IsCompleted)
                            continue;
                        diyAsync[action.Method.Name] = action.BeginInvoke(null, null);
                    }
                    catch (Exception ex)
                    {
                        //任务执行出错
                    }
                }
            }
            protected void Session_Start(object sender, EventArgs e)
            {
                string name = System.Reflection.MethodBase.GetCurrentMethod().Name;
                WH_WriteLog.WriteLog(name);
            }
    
            protected void Application_BeginRequest(object sender, EventArgs e)
            {
               string name=System.Reflection.MethodBase.GetCurrentMethod().Name;
               WH_WriteLog.WriteLog(name);
            }
    
            protected void Application_AuthenticateRequest(object sender, EventArgs e)
            {
                string name=System.Reflection.MethodBase.GetCurrentMethod().Name;
                WH_WriteLog.WriteLog(name);
            }
    
            protected void Application_Error(object sender, EventArgs e)
            {
                string name = System.Reflection.MethodBase.GetCurrentMethod().Name;
                WH_WriteLog.WriteLog(name);
                WH_WriteLog.WriteLog(e.ToString());
            }
    
            protected void Session_End(object sender, EventArgs e)
            {
                string name = System.Reflection.MethodBase.GetCurrentMethod().Name;
                WH_WriteLog.WriteLog(name);
            }
    
            protected void Application_End(object sender, EventArgs e)
            {
                string name = System.Reflection.MethodBase.GetCurrentMethod().Name;
                WH_WriteLog.WriteLog(name);
            }
        }
    
        public class MyClass
        {
            public static void Writer()
            {
                string name = System.Reflection.MethodBase.GetCurrentMethod().Name;
                WH_WriteLog.WriteLog(name);
            }
        }
  • 相关阅读:
    IntelliJ IDEA 使用svn教程
    尾递归
    斐波拉契数列加强版——时间复杂度O(1),空间复杂度O(1)
    斐波拉契数列的计算方法
    C#实现多线程的方式:Task——任务
    LINQ查询表达式详解(2)——查询表达式的转换
    LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询
    完成异步委托的三种方式
    C#实现多线程的方式:使用Parallel类
    C#实现多线程的方法:线程(Thread类)和线程池(ThreadPool)
  • 原文地址:https://www.cnblogs.com/-hao/p/9944813.html
Copyright © 2011-2022 走看看