适用于IList的SyncRoot

Gra*_*ton 0 c# collections

我的代码是ArrayList用于存储集合元素的旧代码.我在删除对象之前使用m_objects.SyncRootfor lock目的:

        lock(m_objects.SyncRoot) 
        {
            m_objects.Remove(obj);

        }
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我现在要改变的类型 m_objects,从ArrayListList<T>,我遇到的问题与上面的代码.什么是等价List<T>SyncRoot

Adr*_*der 5

我想这可能就是你要找的东西

List<string> list = new List<string>();
lock (((IList)list).SyncRoot)
{
}
Run Code Online (Sandbox Code Playgroud)

C#Generics Recipes中找到- 用它的Generic Counterpart替换ArrayList