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

การสร้าง Wrapper แบบ Synchronized สำหรับ SortedList ใน C#

ภาพรวม

SortedList.Synchronized() ใช้สร้าง wrapper แบบ thread-safe สำหรับ SortedList ซึ่งคืนค่า instance ใหม่ที่มี property IsSynchronized เป็น true

ตัวอย่างที่ 1: สร้าง SortedList และ wrapper แบบ synchronized

using System;
using System.Collections;

public class Demo
{
    public static void Main()
    {
        SortedList sortedList = new SortedList();
        sortedList.Add("1", "Tom");
        sortedList.Add("2", "Ryan");
        sortedList.Add("3", "Nathan");

        Console.WriteLine("SortedList elements...");
        foreach (DictionaryEntry d in sortedList)
        {
            Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
        }

        SortedList sortedList2 = SortedList.Synchronized(sortedList);
        Console.WriteLine("SortedList is synchronized? = " + sortedList2.IsSynchronized);
    }
}

ผลลัพธ์

SortedList elements...
Key = 1, Value = Tom
Key = 2, Value = Ryan
Key = 3, Value = Nathan
SortedList is synchronized? = True

ตัวอย่างที่ 2: SortedList ปกติไม่ได้ synchronized

using System;
using System.Collections;

public class Demo
{
    public static void Main()
    {
        SortedList sortedList = new SortedList();
        sortedList.Add("1", "AB");
        sortedList.Add("2", "CD");
        sortedList.Add("3", "EF");
        sortedList.Add("4", "GH");
        sortedList.Add("5", "IJ");
        sortedList.Add("6", "KL");

        Console.WriteLine("SortedList elements...");
        foreach (DictionaryEntry d in sortedList)
        {
            Console.WriteLine("Key = " + d.Key + ", Value = " + d.Value);
        }

        Console.WriteLine("SortedList is synchronized? = " + sortedList.IsSynchronized);
    }
}

ผลลัพธ์

SortedList elements...
Key = 1, Value = AB
Key = 2, Value = CD
Key = 3, Value = EF
Key = 4, Value = GH
Key = 5, Value = IJ
Key = 6, Value = KL
SortedList is synchronized? = False

สรุป

  • ใช้ SortedList.Synchronized(list) สร้าง thread-safe wrapper
  • ตรวจสอบด้วย property IsSynchronized
  • SortedList ต้นฉบับไม่ได้ synchronized โดยค่าเริ่มต้น