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