数组类的Array.SyncRoot属性在C#中做什么?
Array.SyncRoot属性用于获取一个对象,该对象可用于同步对Array的访问。具有数组的类也可以使用SyncRoot属性来实现自己的同步。
通过集合进行枚举不是线程安全的过程。即使同步集合,其他线程也可能会修改集合。这最终将导致枚举器抛出异常。为此,您需要锁定集合。
让我们看一个使用Array.SyncRoot属性的示例-
示例
using System;
using System.Collections.Generic;
using System.Linq;
class Program {
   static void Main() {
      Array arr = new int[] { 23, 11, 32, 18, 87 };
      lock(arr.SyncRoot) {
         foreach (Object val in arr)
         Console.WriteLine(val);
      }
   }
}输出结果
23 11 32 18 87
上面,我们在数组上设置了一个锁-
lock(arr.SyncRoot)
