Как и другие предложили, используйте таймер для запроса базы данных. Единственное, что я хотел бы добавить, это то, что когда вы повторно запрашиваете базу данных, не просто устанавливайте источник данных DataGridView в новую таблицу. Скорее, объединить его с существующей таблицей. Причина этого заключается в том, что если пользователь находится в середине сетки, например, просматривая конкретную строку, если вы переустановите источник данных в новую таблицу, вся сетка обновится, и они потеряют свое место. Раздражает, как ад! Однако если вы объедините , это будет беспрепятственно для пользователя.
DataTable.Merge
При использовании метода Merge следует помнить, что для таблицы необходим первичный ключ. Дважды проверьте, чтобы убедиться, что сам DataTable имеет первичный ключ. Не всегда он вытаскивает его из базы данных. Вам может потребоваться сделать что-то вроде:
table.PrimaryKey = new DataColumn[] {table.Columns["ID"]};