Like other users, use the Timer to query the database. The only thing I would like to add is that when you re-query the database, do not just set the DataGridView data source to a new table. Rather, merge it with an existing table. The reason for this is that if the user is in the middle of the grid, for example, looking at a certain row, if you reset the DataSource to a new table, the whole grid will be updated, and they will lose their place. Annoying as hell! If you combine it, it will be no problem for the user.
DataTable.Merge
The only thing to know when using the Merge method is that the table must have a primary key. Double check that the DataTable itself has a primary key. It does not always retrieve it from the database. You may need to do something like:
table.PrimaryKey = new DataColumn[] {table.Columns["ID"]};
source share