SyncRoot Property (DbDataTable)
Gets an object that can be used to synchronize access to the
System.Data.DataTable.Rows collection.
'Declaration
Public ReadOnly Property SyncRoot As Object
Property Value
A synchronization object.
The following example demonstrates how to use the
SyncRoot property.
static void UseDataTable(DbDataTable myDataTable, DbConnection myConnection) {
myDataTable.Connection = myConnection;
myDataTable.SelectCommand = myConnection.CreateCommand();
myDataTable.SelectCommand.CommandText = "SELECT * FROM Dept";
myDataTable.NonBlocking = true;
myDataTable.Active = true;
while ( true ) {
Thread.Sleep(100);
bool isFetching = !System.Threading.Monitor.TryEnter(myDataTable.SyncRoot, 0);
if (!isFetching)
System.Threading.Monitor.Exit(myDataTable.SyncRoot);
else
break;
Console.Write("Fetch in process");
}
Console.Write("All records are fetched");
}
Private Shared Sub UseDataTable(ByVal myDataTable As DbDataTable, ByVal myConnection As DbConnection)
myDataTable.Connection = myConnection
myDataTable.SelectCommand = myConnection.CreateCommand
myDataTable.SelectCommand.CommandText = "SELECT * FROM Dept"
myDataTable.NonBlocking = True
myDataTable.Active = True
Do While True
Thread.Sleep(100)
If Not Monitor.TryEnter(myDataTable.SyncRoot, 0) Then
Console.Write("All records are fetched")
Return
End If
Monitor.Exit(myDataTable.SyncRoot)
Console.Write("Fetch in process")
Loop
End Sub
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2