Sự khác biệt giữa các hoạt động hủy với hoạt động loopState (Break/Stop) là gì?parallel.foreach - loopState.Stop() so với hủy bỏ
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?
}
}
}
Tại sao tôi muốn sử dụng các hoạt động ParallelOptions Hủy so với loopState.Break();
hoặc loopState.Stop();
hoặc ngược lại?
Tôi không chắc chắn nếu nó trả lời câu hỏi ban đầu của khi tôi sẽ sử dụng loopState qua hủy bỏ ... Bạn có thể chia nhỏ câu trả lời này và giải thích nó nhiều hơn? – webdad3
Tôi đánh giá cao các kịch bản khác nhau. Điều này có ý nghĩa hơn với tôi. – webdad3