2017-08-29 61 views
0

可以鎖定SynchronizedCollection中的對象嗎?C#鎖定SynchronizedCollection中的對象

在下面的示例中,SynchronizedCollection包含其他SynchronizedCollection。

private SynchronizedCollection<SynchronizedCollection<bool>> _lockCollection; 

lock (_lockCollection[stationId]) 
{ 
    /* Synchronized code here */ 
} 

密碼?

回答

1

簡短的回答是是的。您可以鎖定您的SynchronizedCollection返回SynchronizedCollection ...(本身這種說法似乎值得商榷)

較長的答案有幾個方面的考慮...

  1. 無論你是否應該這樣做在所有取決於你的目的和應用。集合本身鎖定共享的「同步」對象,因此不會與您正在創建的鎖衝突。
  2. 集合本身執行內部鎖定,所以你真的需要鎖定它嗎?你在鎖內執行什麼操作會證明這一點?
+0

在鎖內我做了_nextIdDictionary [stationId] = id + 1;'_nextIdDictionary是一個ConcurrentDictionary。 – John

+0

這沒有任何意義... _lockCollection [stationId]的返回值是SynchronizedCollection 。您的聲明與返回的SynchronizedCollection 有什麼關係? –

+0

我應該剛剛回復說,在鎖內我正在增加一個int – John