คุณสมบัติ Array.IsSynchronized ใน C#
Array.IsSynchronized เป็น Property ที่คืนค่า bool แสดงว่าการเข้าถึงอาร์เรย์มีการซิงโครไนซ์ (Thread-safe) หรือไม่ โดยอาร์เรย์มาตรฐานใน C# ไม่ได้ Synchronized โดยค่าเริ่มต้น (คืนค่า false)
ไวยากรณ์
public bool IsSynchronized { get; }
ตัวอย่างการใช้งาน
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
Array arr = new int[] { 2, 1, 9, 4, 8, 6, 8 };
Console.WriteLine("IsSynchronized: " + arr.IsSynchronized); // False
// แม้ IsSynchronized จะเป็น false ยังต้อง Lock ผ่าน SyncRoot เมื่อ Enumerate
lock (arr.SyncRoot)
{
foreach (object val in arr)
Console.WriteLine(val);
}
}
}
ผลลัพธ์
IsSynchronized: False
2
1
9
4
8
6
8
จุดสำคัญ
IsSynchronizedมีเพื่อ Implement InterfaceICollectionเท่านั้น- อาร์เรย์ทั่วไป ไม่ Thread-safe ต้อง Lock เองผ่าน
SyncRoot - คลาสที่ Wrap อาร์เรย์สามารถ Implement Synchronization เองได้โดยใช้
SyncRoot - แนะนำให้ใช้
Concurrent Collections(ConcurrentBag,ConcurrentQueue,ConcurrentDictionary) ใน .NET ใหม่ๆ แทน