所以我有一个 Windows 服务并且我在 OnStart 中开始了任务
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
}
}
我是否需要在 OnStop 中添加 CancellationToken 并停止 Task 还是没有必要?因为服务何时停止 - 任务也会停止。它是否安全?