当前位置: 首页 > 编程语言 > C#

以线程安全的方式添加到Parallel.ForEach循环中的列表分享

时间:2023-04-10 17:47:38 C#

C#学习教程:以线程安全的方式在Parallel.ForEach循环中添加到列表ListofObjects像这样工作的代码:ListNewListofObjects();Parallel.ForEach(ListofObjects,obj=>//这里对obj做一些操作得到一个newobjNewListofObjects.Add(newobj););现在我不在Parallel.ForEach循环中,我想对NewListofObjects进行操作。但是,当我尝试:“尝试读取或写入受保护的内存时,出现此错误。这通常表示其他内存已损坏”。这是因为我的NewListofObjects.Add(newobj)方法不是线程安全的吗?如果是这样,我怎样才能使它线程安全?这是因为我的NewListofObjects.Add(newobj)方法不是线程安全的吗?正确的。它不是线程安全的。没有实例成员保证是线程安全的。这是来自MSDN参考列表(滚动到标题为“线程安全”的部分)。如果是这样,我怎样才能使它线程安全?使用并发集合,例如ConcurrentBag。请注意,您无法跟踪插入项目的顺序。您可以像下面的代码一样使用锁定块以线程安全的方式将项目插入到列表中。以上就是C#学习教程的全部内容:以线程安全的方式在Parallel.ForEach循环中加入列表。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——varsync=newobject();varmyNewList=newList();平行线。ForEach(myListOfSomethings,a=>{//一些其他代码...varsomeObj=newSomeObject();//更多其他代码...lock(sync){myNewList.Add(someObj);}//更多代码...});本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: