首先,我想说明一下,我查了大概一百个Google,以及与我的问题相关的stackoverflow问题。 我找不到任何可以回答我的特定问题的东西。

我将DataTable转换为List。 我有多个线程用foreach枚举List。 但是,每5分钟一次,主线程需要使用最新数据刷新该列表。 发生这种情况时,我需要阻止其他线程读取该线程,直到主线程完全更新了List。

我发现的所有文章和问题都会阻止一次添加。 我知道我可以为更新编写一个阻止,但是我需要将该锁也与所有其他枚举的线程同步。 我不想在其他线程处于其枚举中间时更新列表。

如何编写一个可用于每个语句以及我的更新功能的锁?

谢谢

编辑:当生产者线程正在生产时,我想阻止“消费者/观察者”。 我不希望消费者/观察者互相阻塞。

===============>>#1 票数:0

将填充和枚举列表的所有代码放在一个锁块中:

    lock (theList)
    {
       Update(theList);
    }

    lock (theList)
    {
       foreach (var thingy in theList)
       {
         DoStuff(thingy);
       }
    }

===============>>#2 票数:0

一开始我虽然可以尝试使用BlockingCollection 它实现了生产者/消费者问题。

你真正需要做的是设置一个会合您的阅读线程和你的主线程的方式。

我认为可以使用监视器来完成此操作(尤其是通过使用WaitPulse方法)。 试试看,告诉我们您找到了什么。

  ask by Besticles translate from so

未解决问题?本站智能推荐:

1回复

合并多个列表的通用函数

在C#或VBNET中,如何编写通用函数以将两个(或多个)列表联接到一个新的唯一列表中? 我已经看到了列表类型的Join方法,但是我不知道如何使用它,也不知道一次是否可以连接多个列表(这就是为什么我要求使用Join的泛型函数的原因方法无法完成工作)。 像这样: 更新:
3回复

根据日期条件从通用列表中删除项目

如何根据条件从列表中删除项目。 将所有项目保留在列表中,但如果文档ID为1,则保留最新(最长)日期的项目。 列表包含ID和日期的项目。 列表中可以包含多个具有相同ID的项目,但ID为1。 假设列表中有3个项目,其中一个项目的ID为2,其余项目的ID为1,则ID为1且最新日期的
3回复

C#-汇总列表

假设您有一个列表<string []> 如何获得列表中第二个数组项的总和? 将需要将第二个数组项转换为双精度并求和。 预期结果是350.59 。 谢谢!
1回复

列表/数组列表可以在VB和C#中保存原始类型吗?

我的AP计算机科学课今天刚刚学习了Java中的ArrayList。 在Java中,如果没有包装类,则ArrayLists无法保存原始数据类型。 VB和C#是否一样? 这是否有效:
1回复

按字母顺序和类型对列表进行排序

我有一份仪器清单,我需要将它们分类为以下要求。 订购: 现金 按字母顺序排列的证券 按字母顺序管理基金 我有一个具有名称和类型属性的仪器列表,我设法按名称按字母顺序排序。 但是我一直无法提出一种达到要求的优雅方法。 感谢任何帮助。 谢谢
2回复

如何将多个对象传递到IEnumerable列表?

我有这段代码,似乎支持将许多列表参数传递给它,它会将每个参数相互比较,以便同时在所有其他列表中找到一个公共列表。 我无法弄清楚如何将多个列表传递给一个IEnmerable的参数。 说我的测试代码看起来像这样 我怎么称呼这个? 我必须以某种方式将它们合并到IEnumerabl
3回复

数组/列表和计算哈希值(VB,C#)

问这个问题让我感到难过,但是由于我正在用手机而不是在开发机上写:P,所以我目前无法编程和测试该问题(如果有人回答,则很容易指出!XD) 无论如何,我有使用String对象的hashvalue的经验。 例如,如果我的StringA和StringB都等于“ foo”,则它们都将计算出相同的哈
2回复

ASP.Net的标记列表控件

你们中有没有人知道ASP.Net的轻量级列表控件,可以在其中水平地添加标记的项目? 像这样:
5回复

检查列表中的所有项目是否相同

我有一个List(Of DateTime)项目。 如何检查所有项目是否与LINQ查询相同? 在任何给定时间,列表中可能有1,2,20,50或100个项目。 谢谢
5回复

将HTML列表的内容传输到文本

如何才能做到这一点? .InnerText属性(当在包含div元素上使用时)仅给我html。 是否有可能遍历所有包含的li元素并提取它们的值?