標籤:
今天學習了在.net下建立一個windows服務,總結一下學習心得。 開發環境:visual studio 2012 一、編寫程式 (1)建立一個空解決方案 (2)添加一個控制台應用程式項目 (3)添加一個Windows服務,如下所示: (4)右鍵 查看代碼 看到如下代碼:
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文檔,可以看到所示的結果:
二、調試
在服務啟動並執行狀態下,我們找到功能表列,調試——>附加到進程
注意勾選“顯示所有使用者的進程”,選項,找到我們的進程,點擊附加,然後在程式中添加斷點,就可以偵錯工具了!
.net開發windows服務小結