zoukankan      html  css  js  c++  java
  • .net 启动进程并执行某方法

    需求,程序每20秒自动请求接口抓取数据

    解决方式:

    在程序根目录下的Global.asax.cs下编写

    using System.Threading;
    using System.Timers;

     
    /// <summary> /// 启动应用程序 /// </summary> protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); //// 启动的时候清除全部缓存 ////定时器 userIBLL.SaveLog("应用程序启动", "Application_Start"); System.Timers.Timer aTimer = new System.Timers.Timer(); aTimer.Elapsed += new ElapsedEventHandler(getMessages); //aTimer.AutoReset = true; aTimer.Interval = 20000; aTimer.Enabled = true; aTimer.Start(); userIBLL.SaveLog("应用程序启动", "2"); }

     

     protected void Application_End(object sender, EventArgs e)
            {
                userIBLL.SaveLog("自动回收", "重新执行");
                //下面的代码是关键,可解决IIS应用程序池自动回收的问题  
                Thread.Sleep(1000);
                HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(需要重新启动程序的地址);
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回写的字节流  
            }
            protected void Application_Error(object sender, EventArgs e)
            {
                //重新启动应用程序
    
                var lastError = Server.GetLastError();
                
            }
            private void getMessages(object source, ElapsedEventArgs e)
            {
                try
                {
    
                    写入需要执行的程序
                }
                catch (Exception ex)
                {
                    //打log日志
                }
            }
    

      

  • 相关阅读:
    如何从人群中看出真正优秀的人
    JAVA的面向对象编程--------课堂笔记
    uC/OS-II源码分析
    肖申克的救赎
    汇编中基本的数据类型
    十进制负数转换为二进制、八进制、十六进制的知识分享
    x86汇编指令详解
    Angularjs
    事件处理类型的三种方法
    正则表达式的使用
  • 原文地址:https://www.cnblogs.com/syeacfpl/p/15078172.html
Copyright © 2011-2022 走看看