我正在處理大量對象集合並對它們進行順序讀取。 我發現大多數問題涉及多線程,但我更關心線程本身內由於濫用可分發庫的錯誤。在按順序讀取時防止集合修改
庫中的一個系統管理一個潛在的大量對象集合,一次執行對這個集合的連續讀取,對每個元素執行一個操作。 根據可以在庫之外擴展的元素實現,對象可能會嘗試從集合中刪除自己。
我希望這是一個選項,但如果發生這種情況時順序讀取集合這可能會導致錯誤。我希望能夠在收集內容的同時鎖定收集的內容,並且在順序閱讀完成之後按計劃執行任何刪除請求。 移除請求必須通過系統,因爲對象沒有對集合的公共訪問權限,我只能使用isReading標誌,但我想知道是否有更優雅的構造。
C#或.NET是否提供了一個工具來執行此操作?也許是爲了鎖定列表內容,以便在順序讀取期間攔截刪除請求?或者我是否必須從頭開始實施這種行爲?
我的印象是SynchronizedCollection是針對多線程同步,併爲我的情況承載了太多的開銷,在讀取過程中所有情況都發生在同一個線程中。 – user1658867