首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parallel.For属性

Parallel.For属性
EN

Stack Overflow用户
提问于 2012-10-11 11:42:24
回答 2查看 260关注 0票数 3
代码语言:javascript
复制
public static void Main (string[] args)
        {
            int k = 0;
            int i = 3;
            var loopRes = Parallel.For (0, 20, (J) =>
            {
                k = i / J;
                Console.WriteLine ("Result After division " + J + " = " + k);
            }
            );

            if (loopRes.IsCompleted) {
                Console.WriteLine ("Loop was successful");
            }
            if (loopRes.LowestBreakIteration.HasValue) {
                Console.WriteLine ("loopRes.LowestBreakIteration.Value = " + loopRes.LowestBreakIteration.Value);
            }
        } 

当我在互联网上阅读时,我可以找到Parallel.For & Parallel.Foreach的两个属性

  1. IsCompleted
  2. LowestBreakIteration

对我来说,第一处房产运转良好。但是,在3/0的情况下,它会给出被零误差的除法。因此,第二个if循环应该给出LowestBreakIteration的数量,但是它抛出了一个错误。请告诉我是否有人遇到过同样的问题并解决了它!

另外,请解释这两个属性的主要用途是什么。在什么情况下会有帮助。

希望能很快收到某个人的消息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-11 11:51:19

这是因为它抛出了一个异常,只改变一下循环:

代码语言:javascript
复制
public static void Main (string[] args) 
{ 
    int k = 0; 
    int i = 3; 
    var loopRes = Parallel.For (0, 20, (J, loopState) => 
    { 
        try { k = i / J; }
        catch { loopState.Break(); }
        Console.WriteLine ("Result After division " + J + " = " + k); 
    } 
    ); 

    if (loopRes.IsCompleted) { 
        Console.WriteLine ("Loop was successful"); 
    } 
    if (loopRes.LowestBreakIteration.HasValue) { 
        Console.WriteLine ("loopRes.LowestBreakIteration.Value = " + loopRes.LowestBreakIteration.Value); 
    } 
}  
票数 1
EN

Stack Overflow用户

发布于 2012-10-11 11:51:13

通过查看LowestBreakIteration对象的ParallelLoopState属性,您可以看到对中断方法的调用是如何影响最大迭代次数的,如下所示:

代码语言:javascript
复制
Parallel.For(1, 20, (i, pls) =>
{
    Console.WriteLine(string.Format(
        "i={0} LowestBreakIteration={1}", i, pls.LowestBreakIteration));
    if (i >= 15)
    {
        pls.Break();
    }
});

/* OUTPUT

i=10 LowestBreakIteration=
i=11 LowestBreakIteration=
i=19 LowestBreakIteration=
i=1 LowestBreakIteration=
i=2 LowestBreakIteration=19
i=3 LowestBreakIteration=19
i=6 LowestBreakIteration=19
i=7 LowestBreakIteration=19
i=8 LowestBreakIteration=19
i=9 LowestBreakIteration=19
i=12 LowestBreakIteration=19
i=13 LowestBreakIteration=19
i=14 LowestBreakIteration=19
i=15 LowestBreakIteration=19
i=4 LowestBreakIteration=19
i=5 LowestBreakIteration=15

*/

参考资料:2.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12838728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档