專案需定時呼叫外部 Web Service 同步資料,無法使用 SQL Agent 作業,採用 System.Timers.Timer 在 Application_Start 啟動背景排程。
using System;
using System.Timers;
using System.Web;
namespace MyNet
{
public class Global : HttpApplication
{
private static Timer _syncTimer;
protected void Application_Start(object sender, EventArgs e)
{
_syncTimer = new Timer(30000); // 30 秒間隔
_syncTimer.Elapsed += SyncTimer_Elapsed;
_syncTimer.AutoReset = true;
_syncTimer.Enabled = true;
}
private void SyncTimer_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
var ws = new localhost.MyWebService();
ws.InsertMyWebService(); // 呼叫外部服務
}
catch (Exception ex)
{
// 記錄錯誤日誌
}
}
protected void Application_End(object sender, EventArgs e)
{
_syncTimer?.Dispose(); // 釋放資源
}
}
}
此法適用於簡單內部專案,正式環境建議採用更穩健的排程架構。