在應用系統開發的過程中,難免會出現各種各樣定時任務來處理各項業務,這個時候我們就需要想辦法來完成定時處理功能。
定時處理方法有多種,可以寫個windows應用程序來執行定時處理任務,也可以在web系統的global文件中寫定時處理任務,還可以寫一個windows服務來完成定時處理任務,當然方法多種,各有各的特點,現在我們來創建一個windows service實現定時處理功能。
打開vs工具,創建一個windows 服務,在Service文件中編寫執行任務的代碼,舉例(代碼中LogHelper是我自己寫的記錄日誌功能):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Threading;
namespace WindowsServiceTest
{
public partial class Service1 : ServiceBase
{
private Thread threadSMS;
private bool isEnable = true; //是否啓用短信日報發送功能
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
if (isEnable)
{
LogHelper.WriteInfoLog(DateTime.Now.ToString() + "-----測試服務啓動成功!");
threadSMS = new Thread(new ThreadStart(SendSMS));
threadSMS.Start();
}
else
{
LogHelper.WriteInfoLog(DateTime.Now.ToString() + "-----短信服務未啓動!");
}
}
catch (Exception exp)
{
LogHelper.WriteErrorLog("日報發送出錯:" + exp.Message);
}
}
protected override void OnStop()
{
LogHelper.WriteInfoLog(DateTime.Now.ToString() + "-----測試服務停止!!!!");
threadSMS.Abort();
threadSMS = null;
}
private void SendSMS()
{
while (true)
{
Thread.Sleep(TimeSpan.FromSeconds(10));
LogHelper.WriteInfoLog(DateTime.Now.ToString() + "-----Congratulations, SMS sent successfully!");
}
}
}
}
編譯通過後,生成應用,接下來就是註冊這個服務。
網上找了下,註冊服務的方法有很多,但是講解的都比較麻煩,我歸納了下,製作了註冊方法,省去了繁瑣的dos命令行註冊過程。
服務註冊爲windows服務,方法如下:
註冊 :將下面的這段命令製作成一個bat文件,點擊執行即可
sc create ServiceDemo binpath= 文件目錄\文件名.exe start= auto
pause
註冊好了可以到系統服務中去查看該服務是否已經添加到系統服務中,註冊完成後第一次啓用需要人工啓動,以後則可以實現開機自動啓動。
當你不再使用該服務的時候則需要卸載該服務,方法如下:
卸載 :同樣製作成bat文件,點擊執行
C:\Windows\Microsoft.NET\Framework\v2.0.50727\installutil /u 文件目錄\文件名.exe
pause
當然,以上應用是基於.net framework 2.0開發的。
以上就是.net 開發windows服務系統的過程,註冊和卸載看上去確實方便快捷。