Quelle est la différence entre les opérations d'annulation et l'opération loopState (Break/Stop)?parallel.foreach - loopState.Stop() versus Annulation
private static CancellationTokenSource cts;
public static loopingMethod()
{
cts = new CancellationTokenSource();
try
{
ParallelOptions pOptions = new ParallelOptions();
pOptions.MaxDegreeOfParallelism = 4;
pOptions.CancellationToken = cts.Token;
Parallel.ForEach(dictObj, pOptions, (KVP, loopState) =>
{
pOptions.CancellationToken.ThrowIfCancellationRequested();
parallelDoWork(KVP.Key, KVP.Value, loopState);
}); //End of Parallel.ForEach loop
}
catch (OperationCanceledException e)
{
//Catestrophic Failure
return -99;
}
}
public static void parallelDoWork(string Id, string Value, ParallelLoopState loopState)
{
try{
throw new exception("kill loop");
}
catch(exception ex)
{
if(ex.message == "kill loop")
{
cts.Cancel();
//Or do I use loopState here?
}
}
}
Pourquoi voudrais-je utiliser la ParallelOptions opération d'annulation par rapport à la loopState.Break();
ou loopState.Stop();
ou vice versa?
Je ne suis pas sûr si elle répond à la question originale de quand aurais-je utilisé loopState sur l'annulation ... Pouvez-vous décomposer cette réponse et l'expliquer plus? – webdad3
J'apprécie les différents scénarios. Cela a beaucoup plus de sens pour moi. – webdad3