คุณสมบัติ 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)