我想知道是否有一个finally可以在Parallel.ForEach中使用
try
{
}
finally
{
}这在Parallel.ForEach中是可能的吗?
我需要在循环完成后做一个最后的操作。
Parallel.ForEach(someList, x =>
{
//...
}, // Now i need to do a finally);我的问题是,我终于尝试了我的Parallel.ForEach,但我不希望最终发生。只有在并行任务完成后才会发生这种情况。
所以这对我不起作用
try
{
Parallel.ForEach(someList, x =>
{
//...
});
}
finally
{
}还有别的办法吗?
发布于 2012-05-03 13:58:39
循环和finally不一起使用(可能在Python中除外)。您只需编写在循环之后运行的代码,那么,在循环之后运行。
如果您想要运行它,而不管循环中是否有异常,请执行如下操作:
try
{
Parallel.ForEach(...)
}
finally
{
// ...
}再考虑一下,也许是使用这个Parallel.ForEach 过载的操作,它允许您提供一个"localFinal“操作,只要一个线程(用于执行循环的多个迭代)已经完成,就会调用它。
发布于 2012-05-03 14:00:01
您可以在并行执行的操作中放置一个try .. finally块,或者将其置于外部:
Parallel.ForEach(someList, x =>
{
try
{
}
finally
{
}
});或者:
try
{
Parallel.ForEach(someList, x =>
{
});
}
finally
{
}这取决于您的用例,这在问题中并不清楚。
https://stackoverflow.com/questions/10432926
复制相似问题