




public WindowsService() { InitializeComponent(); } protected override void OnStart(string[] args) { } protected override void OnStop() { }
其中,OnStart方法在 啟動服務時執行;OnStop方法在 停止服務時執行;還有兩個重載方法:OnPause、OnContinue,分別在 暫停服務時執行、恢復服務時執行;它們對應於下圖所示的操作:
(5)添加代碼:
private Thread timerThread; /// <summary> /// 啟動服務時執行 /// </summary> /// <param name="args"></param> protected override void OnStart(string[] args) { File.AppendAllText("D:\\1.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":windows服務開始工作!\r\n", Encoding.Default); timerThread = new Thread(new ThreadStart(Start)); timerThread.Start(); } /// <summary> /// 停止服務時執行 /// </summary> protected override void OnStop() { timerThread.Abort(); File.AppendAllText("D:\\1.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":windows服務結束工作!", Encoding.Default); } private void Start() { while (true) { using (StreamWriter writer = new StreamWriter("D:\\1.txt",true,Encoding.Default)) { writer.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":每十秒鍾輸出一次!"); } Thread.Sleep(10 * 1000); } }
(6)安裝程序,設置屬性
在設計器中添加安裝程序
會生成一個ProjectInstaller.cs文件,如下圖所示:
然后需要做兩件事情:
①設置serviceProcessInstaller1控件的Account屬性為“LocalSystem”
②設置serviceInstaller1組件的StartType屬性為Automatic,把服務設置為自動啟動
(7)啟動服務
打開vs的開發人員命令提示 工具 以管理員身份運行
執行如下所示命令:
①進入到項目所在文件夾,並進入\bin\Debug\路徑下
②安裝服務命令:installutil ConsoleApplication.exe,然后就可以在服務列表中看到我們啟動的服務:
卸載服務的命令是:installutil /u ConsoleApplication.exe
當我們修改代碼后,需要把服務先卸載,才能重新生成成功
③啟動服務
啟動服務后,等一會兒再停止服務,然后我們打開D盤下的1.txt文檔,可以看到下圖所示的結果:
二、調試
在服務運行的狀態下,我們找到菜單欄,調試——>附加到進程
注意勾選“顯示所有用戶的進程”,選項,找到我們的進程,點擊附加,然后在程序中添加斷點,就可以調試程序了!
另:昨天又嘗試把windows服務部署在另外一台沒有安裝virtual studio的機器上,沒有了 vs的開發人員命令提示,又查閱了半天資料,才找到解決辦法,再次貼出來供以后查閱:
主要是使用sc命令,sc是用於與服務控制管理器和服務進行通信的命令行程序。
關於sc命令的詳細說明,我還沒有詳細了解,目前只會使用創建、刪除命令;SC命令的更多用法請在cmd命令提示符中執行help sc 查看
創建服務<將其添加到注冊表>,示例:sc create MsgService binpath= "F:\Message Service\Service.exe" displayname= "短信服務" start= auto
其含義表示創建一個名為MsgService的服務;地址為F:\Message Service\Service.exe,這個地址指向可執行程序;顯示的名字為“短信服務”;自動啟動
<從注冊表>刪除服務,示例:sc delete MsgService
知道使用什么命令了,但是都需要把什么文件部署到另外一個計算機呢?
不需要右鍵發布項目,只需要把工程目錄bin\Debug\下的所有文件拷貝到服務器上即可,如下圖所示:
然后進入服務列表,啟動服務即可