C# 任务。net4和windows服务停止
我有一个windows服务,它有一些任务,这些任务运行一个并行的foreach来处理一些图像 我现在需要做的是让ServiceOnStop方法允许任务完成对已在进行的项目的处理,但不允许任何新项目开始 下面是我的一些代码片段,展示了我所拥有的:C# 任务。net4和windows服务停止,c#,.net-4.0,task,C#,.net 4.0,Task,我有一个windows服务,它有一些任务,这些任务运行一个并行的foreach来处理一些图像 我现在需要做的是让ServiceOnStop方法允许任务完成对已在进行的项目的处理,但不允许任何新项目开始 下面是我的一些代码片段,展示了我所拥有的: if (recordsToProcess != null && recordsToProcess.Any()) { if (!_cancellationTokenSource.Token.IsCan
if (recordsToProcess != null && recordsToProcess.Any())
{
if (!_cancellationTokenSource.Token.IsCancellationRequested)
{
Parallel.ForEach(recordsToProcess, new ParallelOptions { MaxDegreeOfParallelism = MaxParallelThreadSetting }, currentRecord => _Processor.Process(currentRecord, _supportedFileTypes));
}
Task.WaitAll(); //Recently added not sure if needed
}
protected override void OnStop()
{
//Sets the cancel flag to stop the processing
_cancellationTokenSource.Cancel();
//Allows existing threads to complete
_logHandler.LogInfoMessage("Waiting On Cancel");
Task.WaitAll();
//Stop service and tidy up resources
_logHandler.LogInfoMessage("Stopping service");
base.OnStop();
}
正如您所看到的,我正在停止向流程中添加新项目,但我仍然认为服务在一切完成之前就已经停止了
有什么想法吗
干杯您需要打电话阻止处理任何新记录。有关详细信息,请参阅。您需要调用以阻止处理任何新记录。有关详细信息,请参阅。Ok已在中添加了此项,但这仍然让我面临停止问题时的服务???@Morn您可能需要使用
ManualResetEvent
或类似于在循环停止时向服务发送信号…Ok已在中添加了此项,但这仍然给我留下了关于停止问题的服务???@Morn您可能希望在循环停止时使用ManualResetEvent
或类似于向服务发送的信号。。。