C#中ArrayList的同步

在C#中使用ArrayList.Synchronized方法在C#中同步ArrayList。

让我们看一个使用C#中的SyncRoot属性锁定集合的示例-

ArrayList arr = new ArrayList();
lock(arr.SyncRoot) {
   foreach (object ele in arr) {
   }
}

以下是检查ArrayList的同步状态的完整示例-

示例

using System;
using System.Collections;
public class Demo {
   public static void Main() {

      ArrayList arr1 = new ArrayList();
      arr1.Add("One");
      arr1.Add("Two");
      arr1.Add("Three");
      arr1.Add("Four");
      arr1.Add("Five");
      arr1.Add("Six");
      arr1.Add("Seven");
      arr1.Add("Eight");

      //在ArrayList周围设置同步包装
      ArrayList arr2 = ArrayList.Synchronized(arr1);

      //第一个ArrayList的同步状态
      Console.WriteLine("arr1 = {0}", arr1.IsSynchronized ? " synchronized" : "not synchronized");

      //第二个ArrayList的同步状态
      Console.WriteLine("arr2 = {0}", arr2.IsSynchronized ? "synchronized" : "not synchronized");
   }
}

输出结果

arr1 = not synchronized
arr2 = synchronized