Array.SyncRoot プロパティとは? わかりやすく解説

Array.SyncRoot プロパティ

Array へのアクセスを同期するために使用できるオブジェクトを取得します。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

解説解説

このプロパティは、System.Collections.ICollection インターフェイスを実装します。

Array を基本クラスとする .NET Framework クラスでは、SyncRoot プロパティによって、コレクションの独自の同期されたバージョンが用意されています。

配列を使用するクラスでは、SyncRoot プロパティを使用して、独自の同期を実装することもできます。コードによる同期操作は、コレクションで直接実行するのではなく、コレクションの SyncRoot で実行する必要があります。これにより、他のオブジェクトから派生したコレクションの操作が正常に実行されます。特に、コレクションを同時に変更する可能性がある他のスレッドとの間で、正常な同期を維持します。SyncRoot の実装によっては、Array 自体を返す場合もあります。

コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。

このプロパティ値を取得することは、O(1) 操作になります。

使用例使用例

列挙処理中に SyncRoot プロパティを使用して配列をロックする方法を次のコード例に示します。

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
Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot) 
{
    foreach (Object item in myArray)
        Console.WriteLine(item);
}
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);
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からArray.SyncRoot プロパティを検索した結果を表示しています。
Weblioに収録されているすべての辞書からArray.SyncRoot プロパティを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からArray.SyncRoot プロパティ を検索

英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

Array.SyncRoot プロパティのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Array.SyncRoot プロパティのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS