SchemaNameCollection.System.Collections.ICollection.SyncRoot プロパティとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > SchemaNameCollection.System.Collections.ICollection.SyncRoot プロパティの意味・解説 

SchemaNameCollection.System.Collections.ICollection.SyncRoot プロパティ

メモ : このプロパティは、.NET Framework version 2.0新しく追加されたものです。

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

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

Private ReadOnly Property
 System.Collections.ICollection.SyncRoot As Object
 Implements ICollection.SyncRoot
Dim instance As SchemaNameCollection
Dim value As Object

value = CType(instance, ICollection).SyncRoot
Object ICollection.SyncRoot { get; }
private:
virtual property Object^ System.Collections.ICollection.SyncRoot {
    Object^ get () sealed = ICollection::SyncRoot::get;
}

プロパティ
ICollection へのアクセス同期するために使用できるオブジェクト

解説解説

になっているストアパブリックではないコレクション場合現在のインスタンス返す実装要求されます。ただし、他のコレクションラップするコレクション場合現在のインスタンスへのポインタ返すのでは不十分なことがありますこのようなコレクションは、基になっているコレクションSyncRoot プロパティ返す必要があります

System.Collections 名前空間内のほとんどのコレクション クラスは、Synchronized メソッド実装しています。このメソッドは、基になるコレクションラップする同期されたラッパー提供します。ただし、派生クラスでは、SyncRoot プロパティ使用して独自にコレクション同期させることができますコードによる同期操作は、コレクション直接実行するではなくコレクションSyncRoot実行する必要があります。これにより、他のオブジェクトから派生したコレクション操作正常に実行されます。特に、コレクション インスタンス同時に変更する可能性がある別スレッドとの間で、正常な同期維持します。

コレクションSynchronized メソッド実装ていない場合は、SyncRoot次のように使用します

ICollection MyCollection =...
 lock(MyCollection.SyncRoot) {
  // Some operation on the collection, which is now thread safe.
 }
Dim myCollection as New
 ICollection()
 SyncLock myCollection.SyncRoot
  ' Some operation on the collection, which is now thread safe.
 End SyncLock

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

列挙処理中に SyncRoot使用してコレクションロックする方法次の例に示します

ICollection myCollection = new ICollection();
 lock(myCollection.SyncRoot) {
  foreach (Object item in myCollection) {
  // Insert your code here.
  }
 }
Dim myCollection As New
 ICollection()
 Dim item As Object
 SyncLock myCollection.SyncRoot
  For Each item In myCollection
  ' Insert your code here.
  Next item
 End SyncLock
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
SchemaNameCollection クラス
SchemaNameCollection メンバ
System.DirectoryServices 名前空間
IsSynchronized



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

SchemaNameCollection.System.Collections.ICollection.SyncRoot プロパティのお隣キーワード
検索ランキング

   

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



SchemaNameCollection.System.Collections.ICollection.SyncRoot プロパティのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2024 GRAS Group, Inc.RSS