如何編寫C# Windows服務

1、新建C# Windows服務:windows service工程

新建windows service工程

2、新建windows service工程後,系統自動生成一個Service1.cs文件,默認是其設計視圖。選擇查看其代碼,默認有構造函數、OnStart、OnStop三個函數,如下圖所示:

設計視圖 

3、新建了C# Windows服務之後,還要設置該服務運行的週期,左側的ToolBox中有兩個timmer,一個在組件下,一個在windows form下,可惜這兩個都不能用,我們要手工新建一個timmer,並設置其屬性和事件。

  1. public WindowsServiceDemo()   
  2.         {   
  3.             InitializeComponent();   
  4.             System.Timers.Timer t = new System.Timers.Timer(1000);//實例化Timer類,設置間隔時間爲10000毫秒;    
  5.             t.Elapsed += new System.Timers.ElapsedEventHandler(TimeElapse);//到達時間的時候執行事件;    
  6.             t.AutoReset = true;//設置是執行一次(false)還是一直執行(true);    
  7.             t.Enabled = true;//是否執行System.Timers.Timer.Elapsed事件;   
  8.         }   
  9.  
  10.  
  11. public void TimeElapse(object source, System.Timers.ElapsedEventArgs e)   
  12.         {   
  13.             //EventLog log = new EventLog();   
  14.             //log.Source = "我的應用程序";   
  15.             //log.WriteEntry("1秒調用一次", EventLogEntryType.Information);   
  16.             FileStream fs = new FileStream(@"d:/timetick.txt", FileMode.OpenOrCreate, FileAccess.Write);   
  17.             StreamWriter m_streamWriter = new StreamWriter(fs);   
  18.             m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);   
  19.             m_streamWriter.WriteLine("過了一秒 " + DateTime.Now.ToString() + "/n");   
  20.             m_streamWriter.Flush();   
  21.             m_streamWriter.Close();   
  22.             fs.Close();   
  23.     
  24.         }  

4、服務編寫之後,還不能由SCM(服務控制管理器)進行管理,需要給該服務添加裝載器。在Service1.cs的設計視圖,點擊右鍵,選擇“添加裝載器”,系統默認就會添加ProjectInstaller.cs這個類。

Service1.cs的設計視圖  

5、添加該類後,在該類的設計視圖上可看到serviceInstaller1和serviceProcessInstaller1,分別設置其屬性。

設置serviceInstaller1的運行方式爲手動或者自動

設置serviceInstaller1的ServiceName,設置爲什麼,服務列表中就顯示什麼

設置serviceProcessInstaller1的運行賬號爲LocalSystem

6、編譯該工程

7、使用vs自帶的命令行工具,運行installutil 編譯生成的exe

8、在系統的服務中可看到我們創建的服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章