小编use*_*136的帖子

Parallel.ForEach问题

我在C#/ VS2010中使用Parallel.ForEach循环来进行处理,我有几个问题.

首先我有一个需要从远程web服务中提取信息,然后将需要建立的飞行图像(GDI)的过程.

我有一个类,它将所有功能封装到一个对象中,使用两个主要方法Load()和CreateImage(),并在此对象中包含所有GDI管理/ WebRequests"blackboxed".

然后我创建一个包含所有需要处理的对象的GenericList,并使用以下代码遍历列表:

try
        {
            Parallel.ForEach(MyLGenericList, ParallelOptions, (MyObject, loopState) =>
            {                                       

                    MyObject.DoLoad();
                    MyObject.CreateImage();
                    MyObject.Dispose();

                if (loopState.ShouldExitCurrentIteration || loopState.IsExceptional)
                    loopState.Stop();
            });
        }
        catch (OperationCanceledException ex)
        {
            // Cancel here
        }
        catch (Exception ex)
        {
            throw ex;
        }
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:

  1. 鉴于列表中可能有一万个项要解析,上面的代码是最好的方法吗?任何其他想法更受欢迎
  2. 我有一个问题,当我开始进程时,对象被创建/加载并且图像创建得非常快,但是在大约六百个对象之后,进程开始爬行.它最终没有完成,这是正常的吗?

在此先感谢:)亚当

.net c# multithreading task-parallel-library

9
推荐指数
1
解决办法
2746
查看次数

标签 统计

.net ×1

c# ×1

multithreading ×1

task-parallel-library ×1