dotConnect for PostgreSQL Documentation
Devart.Common Namespace / DbDataTable Class / SyncRoot Property
Example

SyncRoot Property (DbDataTable)
Gets an object that can be used to synchronize access to the System.Data.DataTable.Rows collection.
Syntax
'Declaration
 
Public ReadOnly Property SyncRoot As Object
 

Property Value

A synchronization object.
Remarks
DbDataTable uses the SyncRoot object during some fill operations. You can use this object to check if the operation is still in progress.
Example
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
Requirements

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

See Also