Windows 服務在背景無聲運作,適合定時備份、監控、Remoting 伺服器等長期運行任務。Visual Studio 提供「Windows Service」專案範本,拖曳 Timer 元件、撰寫幾行 ADO.NET 代碼、加入安裝程式、InstallUtil 註冊,即可完成專業級服務部署。
AutoBackupService。Interval = 200 (毫秒,每秒 5 次檢查)。Tick 事件撰寫核心邏輯:private void timer1_Tick(object sender, EventArgs e) {
// 範例:每天 02:00 執行完整備份
if (DateTime.Now.Hour == 2 && DateTime.Now.Minute == 0) {
using (SqlConnection conn = new SqlConnection("Server=.;Database=MyDB;Trusted_Connection=True;")) {
conn.Open();
string cmdText = "BACKUP DATABASE MyDB TO DISK='D:\\Backup\\MyDB_' + FORMAT(GETDATE(),'yyyyMMdd') + '.bak'";
using (SqlCommand cmd = new SqlCommand(cmdText, conn)) {
cmd.ExecuteNonQuery();
}
}
}
}
ProjectInstaller.cs。serviceInstaller1:ServiceName = "AutoBackupService"、StartType = Automatic。serviceProcessInstaller1:Account = LocalSystem (或 NetworkService/指定帳號)。AutoBackupService.exe。Visual Studio Developer Command Prompt → InstallUtil AutoBackupService.exe 註冊服務。services.msc → 找 "AutoBackupService" → 右鍵「啟動」→ 設為「自動」→ 完成部署。EventLog.WriteEntry 記錄關鍵操作,方便事後稽核。Worker Service,支援跨平台、依賴注入、IHostedService 模式,部署為 systemd/Linux 服務或 Windows 服務皆可。避坑指南:Timer Interval 不要設太短 (≤100ms) 避免 CPU 佔用過高;資料庫連線字串請放入
app.config加密區段,勿硬編碼;服務帳號遵循最小權限原則,勿濫用 LocalSystem。