在WEB開發時,定時執行某任務有了新答案
忘記說了這是在Global.asax處理的
<%@ Application Language="C#" %>
<%@ import Namespace="System.IO" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
...{
// 在應用程式啟動時啟動並執行代碼
System.Timers.Timer myTimer = new System.Timers.Timer(10000);
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimedEvent);
myTimer.Interval = 10000;
myTimer.Enabled = true;
}
void Application_End(object sender, EventArgs e)
...{
// 在應用程式關閉時啟動並執行代碼
}
void Application_Error(object sender, EventArgs e)
...{
// 在出現未處理的錯誤時啟動並執行代碼
}
void Session_Start(object sender, EventArgs e)
...{
// 在新會話啟動時啟動並執行代碼
}
void Session_End(object sender, EventArgs e)
...{
// 在會話結束時啟動並執行代碼。
// 注意: 只有在 Web.config 檔案中的 sessionstate 模式設定為
// InProc 時,才會引發 Session_End 事件。如果會話模式設定為 StateServer
// 或 SQLServer,則不會引發該事件。
}
private static void OnTimedEvent(object source, System.Timers.ElapsedEventArgs e)
...{
//間隔時間執行某動作
//指定記錄檔的目錄
string fileLogPath = AppDomain.CurrentDomain.BaseDirectory + "/SystemLog/";
string fileLogName = "SoftPrj_CN_" + DateTime.Now.ToLongDateString() + "_log.txt";
//定義檔案資訊對象
FileInfo finfo = new FileInfo(fileLogPath + fileLogName);
//建立唯寫檔案流
using (FileStream fs = finfo.OpenWrite())
...{
//根據上面建立的檔案流建立寫資料流
StreamWriter strwriter = new StreamWriter(fs);
//設定寫資料流的起始位置為檔案流的末尾
strwriter.BaseStream.Seek(0, SeekOrigin.End);
//寫入錯誤發生時間
strwriter.WriteLine("發生時間: " + DateTime.Now.ToString());
//寫入日誌內容並換行
//strwriter.WriteLine("錯誤內容: " + message);
strwriter.WriteLine("錯誤內容: ");
//寫入間隔符
strwriter.WriteLine("---------------------------------------------");
strwriter.WriteLine();
//清空緩衝區內容,並把緩衝區內容寫入基礎流
strwriter.Flush();
//關閉寫資料流
strwriter.Close();
fs.Close();
}
}
</script>