Cursors.SyncRoot Property
Cursors.SyncRoot Property |
Returns an object that can be used to synchronize access to the Cursors collection.
Definition
Visual Basic .NET Public ReadOnly Property SyncRoot As Object C# public object SyncRoot { get; } Managed C++ public: __property Object* get_SyncRoot();
Property Value
System.Object. An object that can be used to synchronize access to the Cursors collection.
This property is read-only. This property has no default value.
Remarks
The Cursors collection implements the ICollection interface. For more information about the SyncRoot property, see the ICollection.SynchRoot property.
Examples
[C#]
This C# example returns a report on the attributes of all the cursors encountered by the InkCollector object passed in as a parameter. It demonstrates using the SyncRoot property of a collection to implement thread-safe iteration.
using Microsoft.Ink; //. . . public string CursorReport(InkCollector theInkCollector) { string theReport = "The InkCollector has encountered the following cursors so far:" + Environment.NewLine; // Get the Cursors collection from the InkCollector Microsoft.Ink.Cursors theCursors = theInkCollector.Cursors; // Prevent changes to the collection while we iterate over it. lock( theCursors.SyncRoot ) { theReport += "Count of cursors: " + theCursors.Count + Environment.NewLine + Environment.NewLine ; foreach (Microsoft.Ink.Cursor cursor in theCursors) { theReport += "Cursor Name: " + cursor.Name + Environment.NewLine; theReport += "Cursor ToString: " + cursor.ToString() + Environment.NewLine; theReport += "Tablet Name: " + cursor.Tablet.Name + Environment.NewLine; theReport += "Cursor Id: " + cursor.Id.ToString() + Environment.NewLine; theReport += "Cursor is inverted: " + cursor.Inverted.ToString() + Environment.NewLine; theReport += "Cursor Buttons:" + Environment.NewLine; foreach (CursorButton button in cursor.Buttons) { CursorButtonState theState = button.State; theReport += " Button Name: " + button.Name + Environment.NewLine; theReport += " State: " + button.State.ToString() + Environment.NewLine; theReport += " Id: " + button.Id.ToString() + Environment.NewLine + Environment.NewLine; } } } return theReport; }
[Visual Basic .NET]
This Microsoft® Visual Basic® .NET example returns a report on the attributes of all the cursors encountered by the InkCollector object passed in as a parameter. It demonstrates using the SyncRoot property of a collection to implement thread-safe iteration.
Imports Microsoft.Ink '. . . Public Function CursorReport(ByVal theInkCollector As InkCollector) _ As String Dim theReport As String = "The InkCollector has encountered " & _ "the following cursors so far:" & vbCrLf ' Get the Cursors collection from the InkCollector Dim theCursors As Microsoft.Ink.Cursors = theInkCollector.Cursors ' Prevent changes to the collection while we iterate over it. SyncLock theCursors.SyncRoot theReport &= "Count of cursors: " & theCursors.Count & vbCrLf Dim theCursor As Microsoft.Ink.Cursor For Each theCursor In theCursors theReport &= "Cursor Name: " & theCursor.Name & vbCrLf theReport &= "Cursor ToString: " & theCursor.ToString() & _ vbCrLf theReport &= "Tablet Name: " & theCursor.Tablet.Name & vbCrLf theReport &= "Cursor Id: " & theCursor.Id.ToString() & vbCrLf theReport &= "Cursor is inverted: " & _ theCursor.Inverted.ToString() & vbCrLf theReport &= "Cursor Buttons:" & vbCrLf Dim theButton As CursorButton For Each theButton In theCursor.Buttons Dim theState As CursorButtonState = theButton.State theReport &= " Button Name: " & theButton.Name & vbCrLf theReport &= " State: " & _ theButton.State.ToString() & vbCrLf theReport &= " Id: " & theButton.Id.ToString() & _ vbCrLf & vbCrLf Next Next End SyncLock Return theReport End Function
See Also