其實定時任務時不時會碰到,只不過解決方案也不是只有一個,網上也有很多文章,但是沒有一篇說得很清楚,尤其是安裝環節,今天就着重說一下安裝,
其他步驟帶過,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服務無法直接運行調試,跟着步驟來: 啟動服務才能附加進程調試
如果勾都打上了還找不到,就關閉這個窗口稍微等等再來一次,准能找到
然后就可以愉快的加斷點調試了
如果改了代碼,需要先停止服務 ,然后重新生成項目,再啟動,然后重新附加進程