在C#中如何同步访问StringCollection

要获得对StringCollection的同步访问,代码如下-

示例

using System;
using System.Collections.Specialized;
public class Demo {
   public static void Main() {
      StringCollection stringCol = new StringCollection();
      String[] arr = new String[] { "100", "200", "300", "400", "500" };
      Console.WriteLine("数组元素...");
      foreach (string res in arr) {
         Console.WriteLine(res);
      }
      stringCol.AddRange(arr);
      Console.WriteLine("元素总数 = "+stringCol.Count);
      stringCol.RemoveAt(3);
      Console.WriteLine("现在的元素总数 = "+stringCol.Count);
      Console.WriteLine("Synchronize access...");
      lock(stringCol.SyncRoot) {
         foreach(object ob in stringCol) {
            Console.WriteLine(ob);
         }
      }
   }
}

输出结果

这将产生以下输出-

数组元素...
100
200
300
400
500
元素总数 = 5
现在的元素总数 = 4
Synchronize access...
100
200
300
500

示例

让我们看另一个例子-

using System;
using System.Collections.Specialized;
public class Demo {
   public static void Main() {
      StringCollection strCol = new StringCollection();
      strCol.Add("Katie");
      strCol.Add("Philips");
      strCol.Add("Jacob");
      strCol.Add("Carl");
      strCol.Add("Gary");
      Console.WriteLine("Synchronize access...");
      lock(strCol.SyncRoot) {
         foreach(object ob in strCol) {
            Console.WriteLine(ob);
         }
      }
   }
}

输出结果

这将产生以下输出-

Synchronize access...
Katie
Philips
Jacob
Carl
Gary