一、Windows Service 服務,可以在用戶未登錄的時候開始運行提供服務(下圖)
二、開始建立一個Windows 服務
1.打開VS2008 新建一個Windows 服務項目
系統會默認的建立一個
Program.cs 是啟動文件,里面有如下代碼用來啟動服務
2.Service1.cs 服務類。繼承自System.ServiceProcess.ServiceBase
右鍵點擊此文件,點擊“查看代碼”,打開類代碼視圖可以找到幾個重載方法
OnStart方法來響應啟動服務的事件
OnStop方法來響應停止服務的事件
OnPause方法來響應暫停服務的事件
OnContinue方法來響應恢復提供服務的事件
在重載這些方法時必須要立即返回,其中不能出現長時間的操作,若處理時間過長則Windows服務管理器會覺得該Windows服務停止響應而報錯。
3.在“設計器視圖”右鍵,會看到一個添加“添加安裝程序”,添加一個ProjectInstaller.cs
ProjectInstaller.cs? 安裝服務,繼承自System.Configuration.Install.Installer,該類用于配合微軟.NET框架自帶的安裝命令行工具InstallUtil.exe
將此文件的serviceProcessInstaller1->Accout屬性,設為:LocalSystem(默認是User)。
4.現在要實現點小功能來學習一下Windows 服務,
功能是簡單實現:每隔5秒向SQL數據庫插入一條數據,然后將SQL語句記錄到指定的TXT文件中做日志,
可以將寫好的功能組件引用進來使用,如果沒有可以簡單的新建類庫項目,打開默認的Class1.cs文件,寫以下幾句代碼
將類庫項目引用到服務項目中來,添加一個System.Timers下的Timer控件,在Elapsed事件中就可以直接調用
5.手動安裝:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe? FilePath\xx.exe
這個FilePath,就是程序文件夾中Debug目錄先的? 項目名.exe? 文件 ,我一直是默認建的,所以這里是WindowsService1.exe
安裝成功,會在本文的第一個圖片位置找到服務名為Service1的服務選項,手動的啟動它一下,可以在D:\log下看到日志
6.卸載:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u FilePath\xx.exe
卸載后頁面中沒有了圖片中的服務
7.最后:
可以為Windows 服務添加客戶端,也可以在啟動程序中編寫不使用 InstallUtil.exe? 的安裝,這些都可以在完成功能的時候加上,方法網上可以找到。
調試服務可以使用附加進程的方式,也可以直接將功能組件開發好調用或者是設置調試線程等方法進行調試,也可以建立測試調試。

二、開始建立一個Windows 服務
1.打開VS2008 新建一個Windows 服務項目

系統會默認的建立一個
Program.cs 是啟動文件,里面有如下代碼用來啟動服務
static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; ServiceBase.Run(ServicesToRun); }
2.Service1.cs 服務類。繼承自System.ServiceProcess.ServiceBase
右鍵點擊此文件,點擊“查看代碼”,打開類代碼視圖可以找到幾個重載方法

OnStart方法來響應啟動服務的事件
OnStop方法來響應停止服務的事件
OnPause方法來響應暫停服務的事件
OnContinue方法來響應恢復提供服務的事件
在重載這些方法時必須要立即返回,其中不能出現長時間的操作,若處理時間過長則Windows服務管理器會覺得該Windows服務停止響應而報錯。
3.在“設計器視圖”右鍵,會看到一個添加“添加安裝程序”,添加一個ProjectInstaller.cs

ProjectInstaller.cs? 安裝服務,繼承自System.Configuration.Install.Installer,該類用于配合微軟.NET框架自帶的安裝命令行工具InstallUtil.exe
將此文件的serviceProcessInstaller1->Accout屬性,設為:LocalSystem(默認是User)。
4.現在要實現點小功能來學習一下Windows 服務,
功能是簡單實現:每隔5秒向SQL數據庫插入一條數據,然后將SQL語句記錄到指定的TXT文件中做日志,
可以將寫好的功能組件引用進來使用,如果沒有可以簡單的新建類庫項目,打開默認的Class1.cs文件,寫以下幾句代碼
namespace ClassLibrary1 { public class Class1 { public static void Test() { LogService ls = new LogService(); ls.InitLog("WindowsService", "d:\\log\\"); ls.WriteLog(" -------------------------------" + DateTime.Now.ToString() + "------------------------------------------"); try { using (SqlConnection cn = new SqlConnection("Data Source=192.168.1.20;Initial Catalog=TestWindowsService;User ID=sa;Password=saaaaa")) { cn.Open(); using (SqlCommand cm = cn.CreateCommand()) { cm.CommandType = CommandType.Text; cm.CommandText = "INSERT INTO T_Test (InsertTime) VALUES (@insertTime)"; cm.Parameters.AddWithValue("@insertTime", DateTime.Now.ToString()); cm.ExecuteNonQuery(); ls.WriteLog("操作成功!SQL語句:" + cm.CommandText); } } } catch (Exception ex) { ls.WriteLog("操作失敗:" + ex); } } } }
將類庫項目引用到服務項目中來,添加一個System.Timers下的Timer控件,在Elapsed事件中就可以直接調用
5.手動安裝:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe? FilePath\xx.exe
這個FilePath,就是程序文件夾中Debug目錄先的? 項目名.exe? 文件 ,我一直是默認建的,所以這里是WindowsService1.exe

安裝成功,會在本文的第一個圖片位置找到服務名為Service1的服務選項,手動的啟動它一下,可以在D:\log下看到日志
6.卸載:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u FilePath\xx.exe

卸載后頁面中沒有了圖片中的服務
7.最后:
可以為Windows 服務添加客戶端,也可以在啟動程序中編寫不使用 InstallUtil.exe? 的安裝,這些都可以在完成功能的時候加上,方法網上可以找到。
調試服務可以使用附加進程的方式,也可以直接將功能組件開發好調用或者是設置調試線程等方法進行調試,也可以建立測試調試。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
