ArrayList.Synchronized Methode

Definition

Gibt einen Listenwrapper zurück, der synchronisiert wird (threadsicher).

Überlädt

Name Beschreibung
Synchronized(ArrayList)

Gibt einen ArrayList Wrapper zurück, der synchronisiert wird (threadsicher).

Synchronized(IList)

Gibt einen IList Wrapper zurück, der synchronisiert wird (threadsicher).

Synchronized(ArrayList)

Gibt einen ArrayList Wrapper zurück, der synchronisiert wird (threadsicher).

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

Parameter

list
ArrayList

Der ArrayList zu synchronisierende

Gibt zurück

Ein ArrayList Wrapper, der synchronisiert wird (threadsicher).

Ausnahmen

list ist null.

Beispiele

Das folgende Codebeispiel zeigt, wie die Auflistung mithilfe der SyncRoot gesamten Enumeration gesperrt wird.

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

Diese Methode ist ein O(1) Vorgang.

Das folgende Codebeispiel zeigt, wie Sie eine ArrayListSynchronisierung durchführen, ermitteln, ob eine ArrayList synchronisiert wird und eine synchronisierte ArrayListVerwendet wird.

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.

Hinweise

Um die Threadsicherheit des ArrayListThreads zu gewährleisten, müssen alle Vorgänge über diesen Wrapper ausgeführt werden.

Das Aufzählen durch eine Sammlung ist in erster Linie keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, können andere Threads die Auflistung weiterhin ändern, wodurch der Enumerator eine Ausnahme auslöst. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Auflistung entweder während der gesamten Enumeration sperren oder die Ausnahmen erfassen, die sich aus Änderungen ergeben, die von anderen Threads vorgenommen wurden.

Weitere Informationen

Gilt für:

Synchronized(IList)

Gibt einen IList Wrapper zurück, der synchronisiert wird (threadsicher).

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

Parameter

list
IList

Der IList zu synchronisierende

Gibt zurück

Ein IList Wrapper, der synchronisiert wird (threadsicher).

Ausnahmen

list ist null.

Beispiele

Das folgende Codebeispiel zeigt, wie die Auflistung mithilfe der SyncRoot gesamten Enumeration gesperrt wird.

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

Diese Methode ist ein O(1) Vorgang.

Hinweise

Um die Threadsicherheit des ArrayListThreads zu gewährleisten, müssen alle Vorgänge über diesen Wrapper ausgeführt werden.

Das Aufzählen durch eine Sammlung ist in erster Linie keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, können andere Threads die Auflistung weiterhin ändern, wodurch der Enumerator eine Ausnahme auslöst. Um die Threadsicherheit während der Enumeration zu gewährleisten, können Sie die Auflistung entweder während der gesamten Enumeration sperren oder die Ausnahmen erfassen, die sich aus Änderungen ergeben, die von anderen Threads vorgenommen wurden.

Weitere Informationen

Gilt für: