Cursors.SyncRoot Property
Returns an object that can be used to synchronize access to the Cursors collection.
Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in microsoft.ink.dll)
Syntax
'Declaration
Public ReadOnly Property SyncRoot As Object
'Usage
Dim instance As Cursors
Dim value As Object
value = instance.SyncRoot
public Object SyncRoot { get; }
public:
virtual property Object^ SyncRoot {
Object^ get () sealed;
}
/** @property */
public final Object get_SyncRoot ()
public final function get SyncRoot () : Object
Not applicable.
Property Value
An System.Object that can be used to synchronize access to the Cursors collection.
Remarks
The Cursors collection implements the System.Collections.ICollection interface. For more information about the SyncRoot property, see the System.Collections.ICollection.SyncRoot property.
Example
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;
}
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
Platforms
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.
Version Information
.NET Framework
Supported in: 3.0
See Also
Reference
Cursors Class
Cursors Members
Microsoft.Ink Namespace
Other Resources
System.Collections.ICollection
System.Collections.ICollection.SyncRoot