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

คุณสมบัติ Array.SyncRoot ของคลาสอาร์เรย์ทำอะไรใน C #


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