现在,Tasks似乎是实现大多数多线程的可接受方式,现在这是"正确" 编写Windows服务启动方法的方法吗?
start方法将很快完成,但我是对Task的新手,并希望确保这是实现服务工作的正确方法。
我已对它进行了测试,似乎有效,但我想知道这种方法是否有副作用。
protected override void OnStart(string[] args)
{
Task.Run(() => MyServiceThingsToDo());
}
private void MyServiceThingsToDo()
{
// all the stuff I want to do like read from database, send alerts
// even start other tasks
}
我已经查看了常规来源,无法找到任何明确说明这是正确现在构建服务的方式的来源(MSDN或其他方式)。
答案 0 :(得分:1)
我在企业应用程序中使用了它,它没有问题:
_messageQueueWatcher = new Task(_engineService.StartMessageQueueWatcher, _cancelTokenSource.Token, TaskCreationOptions.LongRunning);
_messageQueueWatcher.Start();
我是从OnStart(string [] args){}
的异步调用中运行的