相关疑难解决方法(0)

List <Object>线程安全上的Parallel.ForEach

就线程安全而言,这是可以的,或者我需要使用不同的集合吗?

        List<FileMemberEntity> fileInfo = getList(); 

        Parallel.ForEach(fileInfo, fileMember =>
        {
              //Modify each fileMember 
        }
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading

22
推荐指数
2
解决办法
4万
查看次数

可以在迭代时修改List吗?

我有以下内容:

foreach (var depthCard in depthCards)
{
    var card = InternalGetCard(db, depthCard.CardId);
    var set = InternalGetSet(db, (int)card.ParentSetId);
    var depthArray = InternalGetDepthArrayForCard(db, set.SetId);
    foreach (var cardToUpdate in set.Cards)
    {
        // do stuff
        SaveChanges(db);
        depthCards.Remove(depthCardToUpdate); // since I already took care of it here, remove from depthCards
    }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我正在循环中修改集合.我的问题是......是否有某种类型的集合允许这种类型的访问?

我不想ToList()depthCards,因为我已经有他们,我修改该列表作为我迭代.可能吗?

.net c#

11
推荐指数
2
解决办法
9262
查看次数

可以通过多个线程访问List <t>吗?

我打算在多个线程之间共享一个List.该列表将在更改期间锁定,这种更改很少发生.如果同时通过列表从不同的线程进行多次迭代,是否存在线程安全问题?

c# multithreading thread-safety

10
推荐指数
3
解决办法
8089
查看次数

标签 统计

c# ×3

.net ×2

multithreading ×2

thread-safety ×1