Array.IsSynchronized Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob der Zugriff auf die Array synchronisiert (threadsicher) ist.
public:
property bool IsSynchronized { bool get(); };
public:
virtual property bool IsSynchronized { bool get(); };
public bool IsSynchronized { get; }
public virtual bool IsSynchronized { get; }
member this.IsSynchronized : bool
Public ReadOnly Property IsSynchronized As Boolean
Public Overridable ReadOnly Property IsSynchronized As Boolean
Eigenschaftswert
Diese Eigenschaft ist für alle Arrays immer false
.
Implementiert
Beispiele
Im folgenden Codebeispiel wird gezeigt, wie Sie ein Array während der gesamten Aufzählung mithilfe der SyncRoot Eigenschaft sperren.
Array^ myArray = gcnew array<Int32> { 1, 2, 4 };
try
{
Monitor::Enter(myArray->SyncRoot);
for each (Int32 item in myArray)
Console::WriteLine(item);
}
finally
{
Monitor::Exit(myArray->SyncRoot);
}
Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot)
{
foreach (Object item in myArray)
Console.WriteLine(item);
}
let myArray = [| 1; 2; 4|]
lock myArray.SyncRoot (fun () ->
for item in myArray do
printfn $"{item}" )
Dim myArray As Array = New Integer() { 1, 2, 4 }
SyncLock(myArray.SyncRoot)
For Each item As Object In myArray
Console.WriteLine(item)
Next
End SyncLock
Hinweise
Array implementiert die IsSynchronized Eigenschaft, da sie von der System.Collections.ICollection Schnittstelle erforderlich ist.
.NET-Klassen basierend auf Array der Bereitstellung einer eigenen synchronisierten Version der Auflistung mithilfe der SyncRoot Eigenschaft.
Klassen, die Arrays verwenden, können auch ihre eigene Synchronisierung mithilfe der SyncRoot Eigenschaft implementieren. Der Synchronisierungscode muss Vorgänge auf der SyncRoot
Auflistung ausführen, nicht direkt auf der Auflistung. Dies gewährleistet die einwandfreie Funktion von Auflistungen, die von anderen Objekten abgeleitet sind. Insbesondere wird die ordnungsgemäße Synchronisierung mit anderen Threads beibehalten, die gleichzeitig die Auflistung ändern. Beachten Sie, dass einige Implementierungen SyncRoot möglicherweise das Array selbst zurückgeben.
Das Aufzählen durch eine Auflistung ist nicht ein sicheres Threadverfahren. 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.