В чем разница между loopstate.Break (), loopState.Stop () и CancellationTokenSource.Cancel ()

У меня простой вопрос, я следую простому параллельному циклу for. этот цикл for является частью службы Windows. Я хочу остановить цикл, когда кто-то останавливает службу. Я могу найти три способа остановить параллелизм for, который находится в состоянии if. Как лучше всего остановить параллельный цикл for и в чем различия?

       CancellationTokenSource cancellationToken = new CancellationTokenSource();
       ParallelOptions options = new ParallelOptions();
       options.CancellationToken = cancellationToken.Token;

       Parallel.For(0, maximum_operations, options, (a, loopState) =>
        {
            {
                //Do something

                if(!KeepProcessing)
                { 
                    //loopState.Break();
                    //loopState.Stop();
                    cancellationToken.Cancel();

                }
            }
        });
15
задан zish 11 January 2012 в 11:07
поделиться