2013-03-09 124 views
1

我正在研究一個應用程序,它將同時執行多個搜索。每一個都將在它自己的線程上。每個線程都需要檢查一個數組,以查看結果是否已經顯示。如果它沒有顯示結果,則將結果顯示給用戶並將其添加到主數組中。所以每個線程都需要能夠同時讀寫主數組。C#多線程更新/從主數組中讀取

我來自PHP和JS背景,所以我對線程和C#都很陌生。任何幫助在這裏將不勝感激。

編輯:我使用BackgroundWorker來多線程。

+0

你定位哪個.NET版本? – 2013-03-09 17:09:03

+0

我正在使用.NET 4.5 – 2013-03-09 17:09:42

+0

我認爲你應該實現某種監視器(http://en.wikipedia.org/wiki/Monitor_(synchronization))來適度地訪問你的數組 – MarcinJuraszek 2013-03-09 17:10:16

回答

4

我不知道背後使用BackgroundWorker的基本原理,當你去爲.NET 4.5

所以,如果我可以補充:

  1. 請你幫個忙,並使用Task Parallel LibraryTask.Run/Task.Factory.StartNew()Parallel.For/Parallel.ForEach根據您的需要)。
  2. 您必須鎖定(例如通過lockSlimReadWriterLock)或使用Collections.Concurrent命名空間的集合。

現在這是一個漫長的話題繼續下去,所以如果你有任何疑問或問題,我會適當地編輯答案。在我已鏈接的MSDN頁面上有幾個例子。

+0

感謝您的提示。我正在研究TPL。 – 2013-03-09 18:54:27

1

如果我記得沒錯,PHP中的「數組」與字典類似,就鍵/值查找數據結構而言。

在這種情況下,考慮到您使用的是最新版本的.Net,「System.Collections.Concurrent」命名空間中的「ConcurrentDictionary」聽起來像是最簡單的選項。

祝你好運,