一個(gè)簡(jiǎn)單的C# WINDOWS服務(wù)程序
今天在做個(gè)程序,寫一個(gè)通訊平臺(tái),功能是一個(gè)TCP的通訊平臺(tái),和應(yīng)用網(wǎng)關(guān)通訊,一邊是SQLSERVER的擴(kuò)展存儲(chǔ)過程,它從SQL庫(kù)中提出相應(yīng)的字段,通過UDP丟包給通訊平臺(tái),平臺(tái)收到包后連應(yīng)用網(wǎng)關(guān),把數(shù)據(jù)包發(fā)過去并接收應(yīng)用網(wǎng)關(guān)的回執(zhí)。實(shí)現(xiàn)上準(zhǔn)備寫個(gè)windows服務(wù)程序,這樣即使機(jī)器重起了,不用登陸也可以運(yùn)行,不會(huì)影響到業(yè)務(wù)的正常運(yùn)行。
在做C# WINDOWS服務(wù)之前先熟悉一下C# WINDOWS服務(wù)程序在C#中的寫法。
1.在VS.NET2003中新建一個(gè)WINDOWS服務(wù)程序的項(xiàng)目WinSrv_A。
2.更改SERVICE1.CS屬性SERVICENAME為你所要建立的服務(wù)名稱,在服務(wù)管理器->名稱中你可以看到你的服務(wù)名
3.按F7進(jìn)入代碼窗口,里面有2個(gè)重載函數(shù)是你要在其中寫代碼的一個(gè)是
- //protected override void OnStart(string[] args)
- //{...} //這個(gè)函數(shù)是你啟動(dòng)服務(wù)后執(zhí)行的函數(shù)
- //protected override void OnStop()
- //{...}//這個(gè)函數(shù)是你停止服務(wù)后執(zhí)行的函數(shù)
我這里簡(jiǎn)單的做一個(gè)記錄啟動(dòng)和終止服務(wù)的時(shí)間的功能。寫如日志文檔。
- protected override void OnStart(string[] args)
- {
- // TODO: 在此處添加代碼以啟動(dòng)服務(wù)。
- String s = System.DateTime.Now.ToString();
- if(!File.Exists("c:\\srvlog.txt"))
- {
- StreamWriter sr = File.CreateText("c:\\bbbirdlog.txt");
- sr.WriteLine("-------------------------START SRV---------------------");
- sr.WriteLine ("我的新服務(wù)在{0}時(shí)間開始",s);
- sr.WriteLine ("我可以寫整型 {0} or 浮點(diǎn)型 {1},等等.",1, 4.2);
- sr.Close();
- }
- else
- {
- StreamWriter sr = File.AppendText("c:\\bbbirdlog.txt");
- sr.WriteLine("-------------------------START SRV---------------------");
- sr.WriteLine ("我的新服務(wù)在{0}時(shí)間開始",s);
- sr.WriteLine ("我可以寫整型 {0} or 浮點(diǎn)型 {1},等等.",1, 4.2);
- sr.Close();
- }
- }
- ///
- /// 停止此服務(wù)。
- ///
- protected override void OnStop()
- {
- // TODO: 在此處添加代碼以執(zhí)行停止服務(wù)所需的關(guān)閉操作。
- String s1 = System.DateTime.Now.ToString();
- if(!File.Exists("c:\\srvlog.txt"))
- {
- StreamWriter sr = File.CreateText("c:\\bbbirdlog.txt");
- sr.WriteLine("-------------------------STOP SRV---------------------");
- sr.WriteLine ("我的新服務(wù)在{0}時(shí)間停止",s1);
- sr.Close();
- }
- else
- {
- StreamWriter sr = File.AppendText("c:\\bbbirdlog.txt");
- sr.WriteLine("-------------------------STOP SRV---------------------");
- sr.WriteLine ("我的新服務(wù)在{0}時(shí)間停止",s1);
- sr.Close();
- }
- }
4.回到設(shè)計(jì)窗口點(diǎn)右鍵選擇添加安裝程序生成serviceInstaller1和serviceProcessInstaller1兩個(gè)組件
把serviceInstaller1的屬性ServiceName改寫為你的服務(wù)程序名,并把啟動(dòng)模式設(shè)置為AUTOMATIC
把serviceProcessInstaller1的屬性account改寫為L(zhǎng)ocalSystem
5.編譯鏈接生成服務(wù)程序。
6.用.net framework工具INSTALLUTIL安裝服務(wù)程序即可。
這樣,就用C#寫了一個(gè)簡(jiǎn)單的C# WINDOWS服務(wù)程序。【編輯推薦】