C# 控制asp.net網站自動更新數據代碼

mb78 9年前發布 | 3K 次閱讀 C#

添加更新數據在類中寫好,然后在Global.asax里面調用這個類,設置 TestTimer.Start(0, 30000);為1分鐘

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Threading;

namespace OKGO.Web { public class TestTimer { //定義變量n,Timer執行一次n自動加一,根據n來控制定時執行的時間,來解決Timer只能定時一分鐘的時間范圍 static int n = 0; //TimerCallback 委托,GlobalTimer_ToDo表示要執行的方法 public static Timer GlobalTimer = new Timer(new TimerCallback(GlobalTimer_ToDo), null, Timeout.Infinite, Timeout.Infinite);

     /*也可以直接定時
     GlobalTimer.Interval = 10;
             GlobalTimer.Enabled = true;
             GlobalTimerAutoReset = true;*/

     static void GlobalTimer_ToDo(object obj)
     {
         n = n + 1;
        if (n == 2)
         {
            //***這里寫你要定時執行的程序
             System.Data.SqlClient.SqlDataReader dataReader = null;
             try
             {
                 //is_549067
                  System.IO.StreamReader sr = null;
                 string str=string.Empty;
                 dataReader = OKGO.DataAccess.SQLServer.ChannelProvider.Provider.GetAllRoleName();
                         while (dataReader.Read() && dataReader.HasRows)
                         {
                                  System.Net.WebRequest temp = System.Net.WebRequest.Create("http://assist57.ddt.iugame.cn/other/getUserRegDateByUid?uid=is_"+dataReader["UserName"]+"");
        //讀取
        try
        {
            System.Net.WebResponse myTemp = temp.GetResponse();
            sr = new System.IO.StreamReader(myTemp.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8"));
            str = sr.ReadToEnd();
            System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
            xmldoc.LoadXml(str);
            System.Xml.XmlNode nodes = xmldoc.SelectSingleNode("Result");
            string Rolename = nodes.Attributes[2].Value;//角色名稱
            string RolenameTime = nodes.Attributes[3].Value;//角色創建時間
            if (Rolename == "")
                continue;


            OKGO.DataAccess.SQLServer.ChannelProvider.Provider.GetUpdateRoleName(int.Parse(dataReader["UserName"].ToString()), Rolename, RolenameTime);
                                 sr.Close();
                                 sr.Dispose();
                                 sr.Close();
                             }
                             catch (Exception ex)
                             {
                                 throw ex;
                             } 

                         }
             }
             catch (Exception exc)
             {
                 if (dataReader != null)
                 {
                     dataReader.Close();
                     dataReader.Dispose();
                 }
                 throw exc;
             }
             finally
             {
                 if (dataReader != null)
                 {
                     dataReader.Close();
                     dataReader.Dispose();
                 }
                 n = 0;
             }


         }
     }

     public static void Start(long a, long b)
     {
         //Timer.Change(Int32, Int32)方法用來更改計時器的啟動時間和方法調用之間的間隔,用 32 位有符號整數度量時間間隔
         GlobalTimer.Change(a, b);
     }

     public static void Stop()
    {
         //Timeout.Infinite是用于指定無限長等待時間的常數
         GlobalTimer.Change(Timeout.Infinite, Timeout.Infinite);
    }
}

}</pre>

 本文由用戶 mb78 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!