【发布时间】:2013-07-02 02:09:10
【问题描述】:
我有一些代码在名为 ListofObjects 的 obj 对象列表上像这样工作:
List<SomeObject> NewListofObjects<SomeObject>();
Parallel.ForEach(ListofObjects, obj =>
//Do some operations here on obj to get a newobj
NewListofObjects.Add(newobj);
);
现在我退出了 Parallel.ForEach 循环,我想对 NewListofObjects 进行操作。但是,当我尝试执行以下操作时出现此错误:“尝试读取或写入受保护的内存。这通常表明其他内存已损坏”。
这是因为我的 NewListofObjects.Add(newobj) 方法不是线程安全的吗?如果是这样,我怎样才能使它成为线程安全的?
【问题讨论】:
-
你在里面做什么操作(从obj到newobj)?
-
一大堆难以描述的操作......但它们都是在对象列表的每次迭代中创建的局部变量。不过你问这个是对的……我没有排除我对对象所做的所有操作也可能是这个特定问题的根本原因。
标签: c# multithreading