国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【ASP.NET 進階】定時執行任務

2019-11-17 02:06:01
字體:
來源:轉載
供稿:網友

asp.net 進階】定時執行任務

原理:利用全局應用程序類 Global.asax 和 System.Timers.Timer 類定時處理任務。

示例效果圖:

其 Global.asax 類代碼如下:

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Threading;using System.Timers;using System.Web;using System.Web.Security;using System.Web.sessionState;namespace TimingTask{    /**     *原理:Global.asax 可以是asp.net中應用程序或會話事件處理程序,     *我們用到了application_Start(應用程序開始事件)和Application_End(應用程序結束事件)。     *當應用程序開始時,啟動一個定時器,用來定時執行任務YourTask()方法,     *這個方法里面可以寫上需要調用的邏輯代碼,可以是單線程和多線程。     *當應用程序結束時,如IIS的應用程序池回收,讓asp.net去訪問當前的這個web地址。     *這里需要訪問一個aspx頁面,這樣就可以重新激活應用程序。      */    public class Global : System.Web.HttpApplication    {        //在應用程序啟動時運行的代碼          PRotected void Application_Start(object sender, EventArgs e)        {            //定時器            System.Timers.Timer myTimer = new System.Timers.Timer(2000);            myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);            myTimer.Enabled = true;            myTimer.AutoReset = true;        }        private void myTimer_Elapsed(object source, ElapsedEventArgs e)        {            try            {                RunTheTask();            }            catch (Exception ex)            {                WebForm1.html = ex.Message;            }        }        private void RunTheTask()        {            //在這里寫你需要執行的任務            WebForm1.html = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":AutoTask is Working!";        }        // 在新會話啟動時運行的代碼          protected void Session_Start(object sender, EventArgs e)        {        }        protected void Application_BeginRequest(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)        {            // 注意: 只有在 Web.config 文件中的 sessionstate 模式設置為              // InProc 時,才會引發 Session_End 事件。如果會話模式設置為 StateServer               // 或 SQLServer,則不會引發該事件        }        //  在應用程序關閉時運行的代碼          protected void Application_End(object sender, EventArgs e)        {            WebForm1.html = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":Application End!";            //下面的代碼是關鍵,可解決IIS應用程序池自動回收的問題              Thread.Sleep(1000);            //這里設置你的web地址,可以隨便指向你的任意一個aspx頁面甚至不存在的頁面,目的是要激發Application_Start              string url = "WebForm1.aspx";            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();            Stream receiveStream = myHttpWebResponse.GetResponseStream();//得到回寫的字節流          }    }}

然后用 WebForm 頁面輸出定時效果:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace TimingTask{    public partial class WebForm1 : System.Web.UI.Page    {        public static String html = "";        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                GetDataBind();            }        }        private void GetDataBind()        {            for (int i = 0; i <10; i++)            {                System.Threading.Thread.Sleep(1000);                Response.Write(html+"<br />");            }        }    }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蒲江县| 西华县| 邛崃市| 师宗县| 马鞍山市| 海南省| 汾西县| 通道| 广德县| 武穴市| 徐水县| 北流市| 云南省| 乌拉特中旗| 景宁| 喀喇沁旗| 姜堰市| 广德县| 达拉特旗| 武功县| 阜南县| 湘西| 崇左市| 阿拉善左旗| 铅山县| 饶阳县| 嘉禾县| 通辽市| 成武县| 外汇| 太湖县| 木里| 通江县| 堆龙德庆县| 通榆县| 二连浩特市| 固原市| 东乡| 桂林市| 徐水县| 道真|