Computer >> Máy Tính >  >> Lập trình >> C#

Thuộc tính Array.SyncRoot của lớp mảng làm gì trong C #?

Thuộc tính Array.SyncRoot được sử dụng để lấy một đối tượng có thể được sử dụng để đồng bộ hóa quyền truy cập vào Array. Các lớp có mảng cũng có thể sử dụng thuộc tính SyncRoot để triển khai đồng bộ hóa của riêng chúng.

Liệt kê thông qua một bộ sưu tập không phải là một thủ tục an toàn cho chuỗi. Các luồng khác có thể sửa đổi bộ sưu tập ngay cả khi bộ sưu tập được đồng bộ hóa. Điều này cuối cùng sẽ khiến điều tra viên đưa ra một ngoại lệ. Đối với điều này, bạn cần phải khóa bộ sưu tập.

Hãy để chúng tôi xem một ví dụ để làm việc với thuộc tính Array.SyncRoot -

Ví dụ

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);
      }
   }
}

Đầu ra

23
11
32
18
87

Ở trên, chúng tôi đã thiết lập một khóa trên mảng -

lock(arr.SyncRoot)