我正在开发一款同时执行多项搜索的应用。每一个都将在它自己的线程上。每个线程都需要检查一个数组,看看结果是否已经显示出来。如果未显示该结果,则将结果显示给用户并将其添加到主阵列。因此,每个线程都需要能够同时读取和写入主数组。
我来自PHP和JS背景,所以我对线程和C#都很陌生。非常感谢任何帮助。
编辑:我正在使用BackgroundWorker进行多线程。
答案 0 :(得分:4)
我不知道在你使用.NET 4.5时使用BackgroundWorker
背后的理由
所以,如果我可以补充:
Task Parallel Library
Task.Run
/ Task.Factory.StartNew()
,Parallel.For
/ Parallel.ForEach
。lock
或SlimReadWriterLock
)或使用Collections.Concurrent
命名空间中的集合。现在这是一个漫长的话题,所以如果你有任何疑问或问题,我会适当地编辑答案。我链接的MSDN页面上有几个例子。
答案 1 :(得分:1)
如果我没记错的话,一个"阵列"在作为键/值查找数据结构方面,PHP类似于字典。
在这种情况下,并且鉴于您使用的是最新版本的.Net," ConcurrentDictionary"来自" System.Collections.Concurrent"命名空间听起来像是最简单的选择。
祝你好运,