10.19. Automatically Refreshing a DataTable Periodically
Problem
You need to automatically refresh a DataSet periodically.
Solution
Use extended properties and a timer.
The solution uses a table named AutoRefresh in the database AdoDotNet35Cookbook. The following T-SQL statement creates the table:
USE AdoDotNet35Cookbook GO CREATE TABLE AutoRefresh( Id int NOT NULL PRIMARY KEY, Field1 nvarchar(50) NULL, Field2 nvarchar(50) NULL )
Add three records to the AutoRefresh table by executing the following T-SQL batch:
USE AdoDotNet35Cookbook GO INSERT INTO AutoRefresh VALUES (1, 'Field1.1', 'Field2.1'); INSERT INTO AutoRefresh VALUES (2, 'Field1.2', 'Field2.2'); INSERT INTO AutoRefresh VALUES (3, 'Field1.3', 'Field2.3');
The solution creates a DataTable containing the schema and all records from the AutoRefresh table in the AdoDotNet35Cookbook database. A timer is set up to check whether the data needs to be refreshed based on the refresh time (every 15 seconds) stored in the ExtendedProperty of the DataTable. The data is refreshed if required, the ExtendedProperty updated to reflect the next refresh time, and the new data output to the console. A second timer is used to update the data in the data source after 10 seconds. The first refresh of the data after 15 seconds shows the updated data.
The C# code in Program.cs in the project AutoRefreshDataTable is shown in Example 10-31.
Example 10-31. File: Program.cs for AutoRefreshDataTable solution
using System; using System.Data; using System.Data.SqlClient; ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access