Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การซิงโครไนซ์ ArrayList ใน C#

ใช้ ArrayList.Synchronized สร้าง Wrapper ที่ปลอดภัยต่อเธรด

ล็อคด้วย SyncRoot:

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

ตัวอย่าง

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 arr2 = ArrayList.Synchronized(arr1);
        Console.WriteLine("arr1 = {0}", arr1.IsSynchronized ? " synchronized" : "not synchronized");
        Console.WriteLine("arr2 = {0}", arr2.IsSynchronized ? "synchronized" : "not synchronized");
    }
}

ผลลัพธ์

arr1 = not synchronized
arr2 = synchronized