所以我有一个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