首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parallel.ForEach最终从句

Parallel.ForEach最终从句
EN

Stack Overflow用户
提问于 2012-05-03 13:57:00
回答 2查看 1.5K关注 0票数 1

我想知道是否有一个finally可以在Parallel.ForEach中使用

代码语言:javascript
复制
try
{
}
finally
{
}

这在Parallel.ForEach中是可能的吗?

我需要在循环完成后做一个最后的操作。

代码语言:javascript
复制
Parallel.ForEach(someList, x =>
{
    //...
}, // Now i need to do a finally);

我的问题是,我终于尝试了我的Parallel.ForEach,但我不希望最终发生。只有在并行任务完成后才会发生这种情况。

所以这对我不起作用

代码语言:javascript
复制
try
{
   Parallel.ForEach(someList, x =>
   {
      //...
   });
}
finally
{
}

还有别的办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-03 13:58:39

循环和finally不一起使用(可能在Python中除外)。您只需编写在循环之后运行的代码,那么,在循环之后运行。

如果您想要运行它,而不管循环中是否有异常,请执行如下操作:

代码语言:javascript
复制
try
{
   Parallel.ForEach(...)
}
finally
{
   // ...
}

再考虑一下,也许是使用这个Parallel.ForEach 过载的操作,它允许您提供一个"localFinal“操作,只要一个线程(用于执行循环的多个迭代)已经完成,就会调用它。

票数 5
EN

Stack Overflow用户

发布于 2012-05-03 14:00:01

您可以在并行执行的操作中放置一个try .. finally块,或者将其置于外部:

代码语言:javascript
复制
Parallel.ForEach(someList, x =>
{
    try
    {
    }
    finally
    {
    }
});

或者:

代码语言:javascript
复制
try
{
    Parallel.ForEach(someList, x =>
    {
    });
}
finally
{
}

这取决于您的用例,这在问题中并不清楚。

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

https://stackoverflow.com/questions/10432926

复制
相关文章

相似问题

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