Hashtable.Synchronized(Hashtable) Yöntem

Tanım

için eşitlenmiş (iş parçacığı güvenli) sarmalayıcı döndürür Hashtable.

C#
public static System.Collections.Hashtable Synchronized (System.Collections.Hashtable table);

Parametreler

table
Hashtable

Eşitlenecek Hashtable .

Döndürülenler

için Hashtableeşitlenmiş (iş parçacığı güvenli) sarmalayıcı.

Özel durumlar

table, null değeridir.

Örnekler

Aşağıdaki örnek, bir Hashtableöğesinin eşitlenip eşitlenmediğini Hashtable belirlemeyi ve eşitlenmiş Hashtablebir öğesini kullanmayı gösterir.

C#
using System;
using System.Collections;

public class SamplesHashtable2
{
    public static void Main()
    {
        // Creates and initializes a new Hashtable.
        var myHT = new Hashtable();
        myHT.Add(0, "zero");
        myHT.Add(1, "one");
        myHT.Add(2, "two");
        myHT.Add(3, "three");
        myHT.Add(4, "four");

        // Creates a synchronized wrapper around the Hashtable.
        Hashtable mySyncdHT = Hashtable.Synchronized(myHT);

        // Displays the sychronization status of both Hashtables.
        Console.WriteLine("myHT is {0}.", myHT.IsSynchronized ? "synchronized" : "not synchronized");
        Console.WriteLine("mySyncdHT is {0}.", mySyncdHT.IsSynchronized ? "synchronized" : "not synchronized");
    }
}

/*
This code produces the following output.

myHT is not synchronized.
mySyncdHT is synchronized.
*/

Açıklamalar

Synchronized yöntemi, birden çok okuyucu ve yazıcı için iş parçacığı güvenlidir. Ayrıca, eşitlenen sarmalayıcı aynı anda yalnızca bir yazar yazma olmasını sağlar.

Bir koleksiyon ile numaralandırma, aslında iş parçacığı açısından güvenli yordam değildir. Bir koleksiyon eşitlendiği zaman bile, diğer iş parçacıkları numaralandırıcının özel durum oluşturmasına neden olan koleksiyonu değiştirebilir. Numaralandırma sırasında iş parçacığı güvenliği sağlamak için tüm numaralandırma sırasında koleksiyonu kilitleyebilir veya diğer iş parçacıkları tarafından yapılan değişikliklerden kaynaklanan özel durumları yakalayabilirsiniz.

Aşağıdaki kod örneği, tüm numaralandırma sırasında kullanarak koleksiyonun SyncRoot nasıl kilitlenmesini gösterir:

C#
var myCollection = new Hashtable();
lock (myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}

Bu yöntem bir O(1) işlemdir.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Ayrıca bkz.