2017-08-29 78 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