所以我有一個Windows服務 和我的OnStart我是否需要在OnStop方法中的Windows服務中終止任務?
partial class AppServices : ServiceBase
{
private static readonly ILog Log = LogManager.GetCurrentClassLogger();
private Task _task;
public AppServices()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
Log.Info("Service started");
_task = Task.Factory.StartNew(StartWork, TaskCreationOptions.LongRunning);
}
protected override void OnStop()
{
Log.Info("Service stopped");
}
private void StartWork()
{
while(true)
{
// grab some data from db or services
}
}
開始做任務,我需要補充的CancellationToken和調用OnStop停止工作或沒有必要?因爲服務停止時 - 任務也會停止。它是否安全?
OnStop()允許您進行清理或persitency-things,如果必要的話。之後您的服務將關閉(或者在30秒後,如果您尚未準備就緒)。 – TGlatzer 2013-03-01 13:57:44