取消操作與loopState操作(Break/Stop)之間有什麼區別?parallel.foreach - loopState.Stop()與取消
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?
}
}
}
我爲什麼要使用ParallelOptions取消操作相對於loopState.Break();
或loopState.Stop();
或反之亦然?
我不確定它是否回答了我何時使用loopState取消的原始問題......您可以分解此答案並解釋它嗎? – webdad3
我欣賞不同的場景。這對我來說更有意義。 – webdad3