ArrayList.Synchronized Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Eşitlenmiş bir liste sarmalayıcı döndürür (iş parçacığı güvenli).
Aşırı Yüklemeler
| Name | Description |
|---|---|
| Synchronized(ArrayList) |
Eşitlenmiş bir ArrayList sarmalayıcı döndürür (iş parçacığı güvenli). |
| Synchronized(IList) |
Eşitlenmiş bir IList sarmalayıcı döndürür (iş parçacığı güvenli). |
Synchronized(ArrayList)
- Kaynak:
- ArrayList.cs
- Kaynak:
- ArrayList.cs
- Kaynak:
- ArrayList.cs
- Kaynak:
- ArrayList.cs
- Kaynak:
- ArrayList.cs
Eşitlenmiş bir ArrayList sarmalayıcı döndürür (iş parçacığı güvenli).
public:
static System::Collections::ArrayList ^ Synchronized(System::Collections::ArrayList ^ list);
public static System.Collections.ArrayList Synchronized(System.Collections.ArrayList list);
static member Synchronized : System.Collections.ArrayList -> System.Collections.ArrayList
Public Shared Function Synchronized (list As ArrayList) As ArrayList
Parametreler
Döndürülenler
ArrayList Eşitlenmiş bir sarmalayıcı (iş parçacığı güvenli).
Özel durumlar
list, null'e eşittir.
Örnekler
Aşağıdaki kod örneği, tüm numaralandırma sırasında kullanarak SyncRoot koleksiyonun nasıl kilitlenmesini gösterir.
ArrayList myCollection = new ArrayList();
lock(myCollection.SyncRoot)
{
foreach (object item in myCollection)
{
// Insert your code here.
}
}
Dim myCollection As New ArrayList()
SyncLock myCollection.SyncRoot
For Each item As Object In myCollection
' Insert your code here.
Next item
End SyncLock
Bu yöntem bir O(1) işlemdir.
Aşağıdaki kod örneği, bir ArrayListöğesinin eşitlenip eşitlenmediğini ArrayList belirlemeyi ve eşitlenmiş ArrayListbir kullanıp kullanmadığını gösterir.
using System;
using System.Collections;
public class SamplesArrayList {
public static void Main() {
// Creates and initializes a new ArrayList.
ArrayList myAL = new ArrayList();
myAL.Add( "The" );
myAL.Add( "quick" );
myAL.Add( "brown" );
myAL.Add( "fox" );
// Creates a synchronized wrapper around the ArrayList.
ArrayList mySyncdAL = ArrayList.Synchronized( myAL );
// Displays the sychronization status of both ArrayLists.
Console.WriteLine( "myAL is {0}.", myAL.IsSynchronized ? "synchronized" : "not synchronized" );
Console.WriteLine( "mySyncdAL is {0}.", mySyncdAL.IsSynchronized ? "synchronized" : "not synchronized" );
}
}
/*
This code produces the following output.
myAL is not synchronized.
mySyncdAL is synchronized.
*/
Imports System.Collections
Public Class SamplesArrayList
Public Shared Sub Main()
' Creates and initializes a new ArrayList.
Dim myAL As New ArrayList()
myAL.Add("The")
myAL.Add("quick")
myAL.Add("brown")
myAL.Add("fox")
' Creates a synchronized wrapper around the ArrayList.
Dim mySyncdAL As ArrayList = ArrayList.Synchronized(myAL)
' Displays the sychronization status of both ArrayLists.
Dim str As String
If myAL.IsSynchronized Then
str = "synchronized"
Else
str = "not synchronized"
End If
Console.WriteLine("myAL is {0}.", str)
If mySyncdAL.IsSynchronized Then
str = "synchronized"
Else
str = "not synchronized"
End If
Console.WriteLine("mySyncdAL is {0}.", str)
End Sub
End Class
' This code produces the following output.
'
' myAL is not synchronized.
' mySyncdAL is synchronized.
Açıklamalar
öğesinin iş parçacığı güvenliğini ArrayListgaranti etmek için tüm işlemlerin bu sarmalayıcı aracılığıyla yapılması gerekir.
Bir koleksiyonda numaralandırma, iş parçacığı açısından güvenli bir yordam değildir. Bir koleksiyon eşitlendiğinde bile, diğer iş parçacıkları yine de koleksiyonu değiştirebilir ve bu da numaralandırıcının bir özel durum oluşturmasına neden olur. Numaralandırma sırasında iş parçacığı güvenliğini garanti etmek 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.
Ayrıca bkz.
Şunlara uygulanır
Synchronized(IList)
- Kaynak:
- ArrayList.cs
- Kaynak:
- ArrayList.cs
- Kaynak:
- ArrayList.cs
- Kaynak:
- ArrayList.cs
- Kaynak:
- ArrayList.cs
Eşitlenmiş bir IList sarmalayıcı döndürür (iş parçacığı güvenli).
public:
static System::Collections::IList ^ Synchronized(System::Collections::IList ^ list);
public static System.Collections.IList Synchronized(System.Collections.IList list);
static member Synchronized : System.Collections.IList -> System.Collections.IList
Public Shared Function Synchronized (list As IList) As IList
Parametreler
Döndürülenler
IList Eşitlenmiş bir sarmalayıcı (iş parçacığı güvenli).
Özel durumlar
list, null'e eşittir.
Örnekler
Aşağıdaki kod örneği, tüm numaralandırma sırasında kullanarak SyncRoot koleksiyonun nasıl kilitlenmesini gösterir.
ArrayList myCollection = new ArrayList();
lock(myCollection.SyncRoot)
{
foreach (object item in myCollection)
{
// Insert your code here.
}
}
Dim myCollection As New ArrayList()
SyncLock myCollection.SyncRoot
For Each item As Object In myCollection
' Insert your code here.
Next item
End SyncLock
Bu yöntem bir O(1) işlemdir.
Açıklamalar
öğesinin iş parçacığı güvenliğini ArrayListgaranti etmek için tüm işlemlerin bu sarmalayıcı aracılığıyla yapılması gerekir.
Bir koleksiyonda numaralandırma, iş parçacığı açısından güvenli bir yordam değildir. Bir koleksiyon eşitlendiğinde bile, diğer iş parçacıkları yine de koleksiyonu değiştirebilir ve bu da numaralandırıcının bir özel durum oluşturmasına neden olur. Numaralandırma sırasında iş parçacığı güvenliğini garanti etmek 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.