ControlCollection.SyncRoot ControlCollection.SyncRoot ControlCollection.SyncRoot ControlCollection.SyncRoot Property

Определение

Возвращает объект, который может быть использован для синхронизации доступа к коллекции элементов управления.Gets an object that can be used to synchronize access to the collection of controls.

public:
 property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object

Значение свойства

Объект Object, который используется для синхронизации коллекции.The Object used to synchronize the collection.

Реализации

Примеры

В следующем примере кода создается метод, который перечисляет ControlCollection коллекцию Button элементов управления myButton.The following code example creates a method that enumerates through the ControlCollection collection of a Button control, myButton. При создании IsSynchronized перечислителя свойство проверяется на то, является ли операция потокобезопасным, а если нет SyncRoot , свойство используется для получения объекта, чтобы обеспечить безопасность потока операций.When the enumerator is created, the IsSynchronized property is checked to see if the operation is thread safe, and if it is not, the SyncRoot property is used to obtain an object to make the operation thread safe. По завершении перечисления значение IsReadOnly свойства записывается Text как свойство Label элемента управления на содержащей его странице.When the enumeration is complete, the value of the IsReadOnly property is written as the Text property of a Label control on the containing page.

// Create a method that enuberates through a 
// button//s ControlCollection in a thread-safe manner.  
public void ListControlCollection(object sender, EventArgs e)
{
   IEnumerator myEnumerator = myButton.Controls.GetEnumerator();

   // Check the IsSynchronized property. If False,
   // use the SyncRoot method to get an object that 
   // allows the enumeration of all controls to be 
   // thread safe.
   if (myButton.Controls.IsSynchronized == false)
   {
       lock (myButton.Controls.SyncRoot)
       {
           while (myEnumerator.MoveNext())
           {

               Object myObject = myEnumerator.Current;

               LiteralControl childControl = (LiteralControl)myEnumerator.Current;
               Response.Write("<b><br /> This is the  text of the child Control  </b>: " +
                              childControl.Text);
           }
           msgReadOnly.Text = myButton.Controls.IsReadOnly.ToString();
       }
   }       
}
' Create a method that enuberates through a 
' button's ControlCollection in a thread-safe manner.  
Public Sub ListControlCollection(sender As Object, e As EventArgs)
   Dim myEnumerator As IEnumerator = myButton.Controls.GetEnumerator()

   ' Check the IsSynchronized property. If False,
   ' use the SyncRoot method to get an object that 
   ' allows the enumeration of all controls to be 
   ' thread safe.
   If myButton.Controls.IsSynchronized = False Then
     SyncLock myButton.Controls.SyncRoot
       While (myEnumerator.MoveNext())

       Dim myObject As Object  = myEnumerator.Current
           
         Dim childControl As LiteralControl = CType(myEnumerator.Current, LiteralControl)
         Response.Write("<b><br /> This is the  text of the child Control  </b>: " & _
                        childControl.Text)
       End While
      msgReadOnly.Text = myButton.Controls.IsReadOnly.ToString()
      
      End SyncLock
   End If       
 End Sub

Применяется к

Дополнительно