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