📜  C#|检查Hashtable是否已同步(线程安全)

📅  最后修改于: 2021-05-29 21:04:05             🧑  作者: Mango

Hashtable.IsSynchronized属性用于获取一个值,该值指示对Hashtable的访问是否同步(线程安全)。

句法:

public virtual bool IsSynchronized { get; }

返回值:如果对Hashtable的访问已同步(线程安全),则此属性返回true ,否则返回false 。默认值为false

下面的程序说明了上面讨论的属性的用法:

范例1:

// C# code to check if Hashtable
// Is Synchronized or not
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // create and initialize Hashtable 
        // using Add() method 
        Hashtable has1 = new Hashtable(); 
          
        has1.Add("1", "Welcome"); 
        has1.Add("2", "to"); 
        has1.Add("3", "geeks"); 
        has1.Add("4", "for"); 
        has1.Add("5", "geeks"); 
  
        // Creates a synchronized
        // wrapper around the Hashtable.
        Hashtable smyTable = Hashtable.Synchronized(has1);
  
        // Displays the synchronization 
        // status of both Hashtables.
        Console.WriteLine("has1 is {0}.", has1.IsSynchronized ? 
                                "Synchronized" : "Not Synchronized");
                                  
        Console.WriteLine("smyTable is {0}.", smyTable.IsSynchronized ?
                                  "Synchronized" : "Not Synchronized");
    }
}
输出:
has1 is Not Synchronized.
smyTable is Synchronized.

范例2:

// C# code to check if Hashtable
// Is Synchronized or not
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating a Hashtable
        Hashtable myTable = new Hashtable();
  
        // Adding elements in Hashtable
        myTable.Add("G", "Geeks");
        myTable.Add("C", "C#");
        myTable.Add("D", "Data Structures");
        myTable.Add("Q", "Quiz");
  
        // Checking if Hashtable is
        // synchronized (thread safe)
        Console.WriteLine(myTable.IsSynchronized);
    }
}
输出:
False

注意:哈希表可以同时支持一个作者和多个读者。为了支持多个编写器,所有操作必须通过Synchronized方法返回的包装器完成。

参考:

  • https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.hashtable.issynchronized?view=netframework-4.7.2