windows服務定時任務
其實定時任務時不時會碰到,只不過解決方案也不是隻有一個,網上也有很多文章,但是沒有一篇說得很清楚,尤其是安裝環節,今天就著重說一下安裝,
其他步驟帶過,C#開發windows服務,開發,安裝,除錯
1. 新增安裝程式 (找的其他部落格的配圖)
之後我們可以看到上圖,自動為我們建立了ProjectInstaller.cs以及2個安裝的元件。
2)修改安裝服務名
右鍵serviceInsraller1,選擇屬性,將ServiceName的值改為ServiceTest。
3)修改安裝許可權
右鍵serviceProcessInsraller1,選擇屬性,將Account的值改為LocalSystem。
2.業務程式碼(讀取配置檔案裡面的所有節點,然後開啟多個定時任務)app.config配置如下:
protected override void OnStart(string[] args) { NameValueCollection urls = ConfigurationManager.AppSettings; List<Timer> timers = new List<Timer> (); int i =1; foreach (var item in urls) { try { string values = urls["url" + i]; string[] strs = values.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries); string url = strs[0]; int interval = Convert.ToInt32(strs[1]); Timer temp = new Timer(); temp.AutoReset = true; temp.Interval = interval; temp.Enabled = true; temp.Elapsed += new ElapsedEventHandler((object sender, System.Timers.ElapsedEventArgs e) => { try { Http.Get(url); } catch (Exception ex) { Log.LogResult(ex.StackTrace); } }); temp.Start(); timers.Add(temp); } catch (Exception ex) { Log.LogResult("建立timer失敗:"+ex.StackTrace); } i++; } }
3. 安裝
如果專案是4.0的,那麼要去 C:\Windows\Microsoft.NET\Framework\v4.0.30319 (V4.0開頭的就行) 路徑下面找到 InstallUtil.exe
專案如果是2.0的,那麼找 C:\Windows\Microsoft.NET\Framework\v2.0.50727 (v2.0 開頭就行) 路徑下面找到 InstallUtil.exe
要將服務安裝到哪臺機就要去哪臺機裡面找,沒有框架就裝框架,如果複製本地的檔案到遠端伺服器使用是不行的,微軟有安全驗證
將檔案installUtil.exe 複製到 Debug目錄下面
準備工作做好,開始安裝: 以管理員身份開啟cmd,然後進到Debug目錄裡面,先試試installutil.exe 有沒有用
出現類似頁面就說明有用,
執行命令 installutil serviceTest.exe(服務對應程式名稱debug下面的 .exe )
如果出現安裝成功字眼,並且沒有出現錯誤字眼,說明服務安裝成功
然後去服務裡面找到這個服務
4.除錯 (除錯 => 附加到程序 )
windows服務無法直接執行除錯,跟著步驟來: 啟動服務才能附加程序除錯
如果勾都打上了還找不到,就關閉這個視窗稍微等等再來一次,準能找到
然後就可以愉快的加斷點除錯了
如果改了程式碼,需要先停止服務 ,然後重新生成專案,再啟動,然後重新附加程序