Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Array.IsSynchronized-Eigenschaft

 

Veröffentlicht: Oktober 2016

Ruft einen Wert ab, der angibt, ob der Zugriff auf die Array synchronisiert (threadsicher) ist.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public bool IsSynchronized { get; }

Eigenschaftswert

Type: System.Boolean

Diese Eigenschaft ist für alle Arrays immer false.

Arrayimplementiert die IsSynchronized Eigenschaft, da er erforderlich ist der System.Collections.ICollection Schnittstelle.

.NET Framework-Klassen basierend auf Array bieten eigene synchronisierte Version der Auflistung unter Verwendung der SyncRoot Eigenschaft.

Klassen, die Arrays verwenden, können auch implementieren ihre eigenen Synchronisierung über die SyncRoot Eigenschaft. Im Synchronisierungscode führen Vorgänge für die SyncRoot der Auflistung, nicht direkt für die Auflistung. Dies gewährleistet die einwandfreie Funktion von Auflistungen, die von anderen Objekten abgeleitet sind. Insbesondere verwaltet er die ordnungsgemäße Synchronisierung mit anderen Threads, die gleichzeitig die Auflistung eventuell. Beachten Sie, dass einige Implementierungen von SyncRoot möglicherweise zurück, die Array selbst.

Einer Auflistung ist systemintern keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, besteht die Möglichkeit, dass andere Threads sie ändern. Dies führt dazu, dass der Enumerator eine Ausnahme auslöst. Um während der Enumeration Threadsicherheit zu gewährleisten, können Sie entweder die Auflistung während der gesamten Enumeration sperren oder die Ausnahmen, die aus von anderen Threads stammenden Änderungen resultieren, abfangen.

Das Abrufen des Werts dieser Eigenschaft ist ein O(1)-Vorgang.

Im folgenden Codebeispiel wird veranschaulicht, wie ein Array während der gesamten Enumeration sperren, mit der SyncRootEigenschaft.

Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot) 
{
    foreach (Object item in myArray)
        Console.WriteLine(item);
}

.NET Framework
Verfügbar seit 1.1
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: