C# 任务。net4和windows服务停止

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

我有一个windows服务,它有一些任务,这些任务运行一个并行的foreach来处理一些图像

我现在需要做的是让ServiceOnStop方法允许任务完成对已在进行的项目的处理,但不允许任何新项目开始

下面是我的一些代码片段,展示了我所拥有的:

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
或类似于向服务发送的信号。。。