C#从主阵列更新/读取多线程

时间:2013-03-09 17:07:32

标签: c# multithreading

我正在开发一款同时执行多项搜索的应用。每一个都将在它自己的线程上。每个线程都需要检查一个数组,看看结果是否已经显示出来。如果未显示该结果,则将结果显示给用户并将其添加到主阵列。因此,每个线程都需要能够同时读取和写入主数组。

我来自PHP和JS背景,所以我对线程和C#都很陌生。非常感谢任何帮助。

编辑:我正在使用BackgroundWorker进行多线程。

2 个答案:

答案 0 :(得分:4)

我不知道在你使用.NET 4.5时使用BackgroundWorker背后的理由

所以,如果我可以补充:

  1. 帮自己一个忙,并根据您的需要使用Task Parallel Library Task.Run / Task.Factory.StartNew()Parallel.For / Parallel.ForEach
  2. 您必须锁定(例如lockSlimReadWriterLock)或使用Collections.Concurrent命名空间中的集合。
  3. 现在这是一个漫长的话题,所以如果你有任何疑问或问题,我会适当地编辑答案。我链接的MSDN页面上有几个例子。

答案 1 :(得分:1)

如果我没记错的话,一个"阵列"在作为键/值查找数据结构方面,PHP类似于字典。

在这种情况下,并且鉴于您使用的是最新版本的.Net," ConcurrentDictionary"来自" System.Collections.Concurrent"命名空间听起来像是最简单的选择。

祝你好运,