Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में HybridDictionary के लिए सिंक्रनाइज़्ड एक्सेस प्राप्त करना

परिचय

HybridDictionary छोटे संग्रहों के लिए ListDictionary और बड़े के लिए Hashtable का उपयोग करता है। थ्रेड-सेफ एक्सेस के लिए SyncRoot प्रॉपर्टी के साथ lock का उपयोग करें।

उदाहरण 1: दो HybridDictionary पर सिंक्रनाइज़ेशन

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
    public static void Main() {
        HybridDictionary dict1 = new HybridDictionary();
        dict1.Add("A", "Books");
        dict1.Add("B", "Electronics");
        dict1.Add("C", "Smart Wearables");
        dict1.Add("D", "Pet Supplies");
        dict1.Add("E", "Clothing");
        dict1.Add("F", "Footwear");

        Console.WriteLine("HybridDictionary1 तत्व...");
        foreach(DictionaryEntry d in dict1) {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        Console.WriteLine("क्या HybridDictionary1 का आकार निश्चित है? = " + dict1.IsFixedSize);
        Console.WriteLine("क्या HybridDictionary1 रीड-ओनली है? = " + dict1.IsReadOnly);
        Console.WriteLine("क्या HybridDictionary1 सिंक्रनाइज़्ड है? = " + dict1.IsSynchronized);

        HybridDictionary dict2 = new HybridDictionary();
        dict2.Add("1", "One");
        dict2.Add("2", "Two");
        dict2.Add("3", "Three");
        dict2.Add("4", "Four");
        dict2.Add("5", "Five");
        dict2.Add("6", "Six");

        Console.WriteLine("\nHybridDictionary2 तत्व...");
        foreach(DictionaryEntry d in dict2) {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        Console.WriteLine("क्या HybridDictionary1, HybridDictionary2 के बराबर है? = " + (dict1.Equals(dict2)));

        Console.WriteLine("\nसिंक्रनाइज़्ड एक्सेस...");
        lock(dict2.SyncRoot) {
            foreach(DictionaryEntry d in dict2) {
                Console.WriteLine(d.Key + " " + d.Value);
            }
        }
    }
}

आउटपुट

HybridDictionary1 तत्व...
A Books
B Electronics
C Smart Wearables
D Pet Supplies
E Clothing
F Footwear
क्या HybridDictionary1 का आकार निश्चित है? = False
क्या HybridDictionary1 रीड-ओनली है? = False
क्या HybridDictionary1 सिंक्रनाइज़्ड है? = False
HybridDictionary2 तत्व...
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
क्या HybridDictionary1, HybridDictionary2 के बराबर है? = False
सिंक्रनाइज़्ड एक्सेस...
1 One
2 Two
3 Three
4 Four
5 Five
6 Six

उदाहरण 2: छोटे HybridDictionary पर सिंक्रनाइज़ेशन

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
    public static void Main() {
        HybridDictionary dict = new HybridDictionary();
        dict.Add("A", "SUV");
        dict.Add("B", "MUV");
        dict.Add("C", "AUV");

        Console.WriteLine("HybridDictionary तत्व...");
        foreach(DictionaryEntry d in dict) {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        Console.WriteLine("\nसिंक्रनाइज़्ड एक्सेस...");
        lock(dict.SyncRoot) {
            foreach(DictionaryEntry d in dict) {
                Console.WriteLine(d.Key + " " + d.Value);
            }
        }
    }
}

आउटपुट

HybridDictionary तत्व...
A SUV
B MUV
C AUV
सिंक्रनाइज़्ड एक्सेस...
A SUV
B MUV
C AUV

मुख्य बिंदु

  • HybridDictionary स्वचालित रूप से आंतरिक कार्यान्वयन बदलता है।
  • SyncRoot केवल एन्यूमरेशन के लिए सिंक्रनाइज़ेशन प्रदान करता है; अन्य ऑपरेशन्स के लिए मैन्युअल लॉकिंग आवश्यक है।
  • समवर्ती परिदृश्यों के लिए ConcurrentDictionary पर विचार करें।
  1. - C# में HybridDictionary के माध्यम से पुनरावृत्ति करने वाला एन्यूमरेटर प्राप्त करें

    उदाहरण HybridDictionary की GetEnumerator() मेथड एक IDictionaryEnumerator लौटाती है। इस उदाहरण में दो HybridDictionary ऑब्जेक्ट बनाए गए हैं और दूसरे को एन्यूमरेटर के माध्यम से पुनरावृत्त किया गया है। using System; using System.Collections; using System.Collections.Specialized; public class Demo {

  1. - C# में OrderedDictionary की रीड-ओनली कॉपी प्राप्त करें

    उदाहरण OrderedDictionary की AsReadOnly() मेथड डिक्शनरी का एक रीड-ओनली रैपर लौटाती है। यह रैपर IsReadOnly प्रॉपर्टी को true पर सेट करता है, जिससे डिक्शनरी में संशोधन रोका जाता है। using System; using System.Collections; using System.Collections.Specialized; public class Demo { public static void

  1. - Windows 10 और 8 क्विक एक्सेस मेनू (Win+X) को अनुकूलित करें - चरण-दर-चरण मार्गदर्शिका

    क्विक एक्सेस जिसे पावर यूजर मेनू के रूप में भी जाना जाता है, डिवाइस मैनेजर, डिस्क मैनेजमेंट, और कमांड प्रॉम्प्ट जैसे उन्नत सिस्टम टूल्स तक पहुंचने का सबसे तेज़ तरीका है। यह सुविधा Windows 8 के लॉन्च के बाद से पेश की गई है। इसे एक्सेस करने के लिए, आपको Windows और X कुंजी एक साथ दबाने या स्टार्ट मेनू