Ваш источник данных должен иметь событие, которое запускается при обновлении. Возможно, вы могли бы присоединиться к этому событию и запустить его без вмешательства пользователя - хотя вам, вероятно, потребуется использовать делегат для обновления пользовательского интерфейса, поскольку он запускается из триггера события.
Для ясности, я знаю, что у SQL нет способа отменить изменение, у меня сложилось впечатление, что у них есть библиотека, в которой реализованы операции CRUD, к которым они привязаны, и есть события, доступные для флаг сказал изменения. Получив комментарий ниже, я могу принять более обоснованное решение
РЕДАКТИРОВАТЬ Версия 2
Я бы предложил создать таймер, как предложил Питер, и опросить базу данных на предмет изменений. Используйте какое-либо значение в базе данных в качестве счетчика, чтобы знать, когда вам нужно получать обновления (т. Е. Если в таблице есть первичный ключ, продолжайте проверять WHERE key > last_key_receieved
)
Кроме того, поскольку вы будете работать в другом потоке, вам нужно будет создать метод, который будет безопасно обновлять пользовательский интерфейс. В зависимости от того, сколько столбцов у вас в listView, прототип будет отличаться, но предпосылка та же:
Timer updateScoresTimer = new Timer();
updateScoresTimer.Tick += delegate
{
// 1. grab the database info
// 2. filter for post-worthy changes
// 3. iterate over changes, passing the UI info to AddScore(...)
};
updateScoresTimer.Interval = 30000;
updateScoresTimer.Start();
public delegate void AddScoreHandler(String arg1, String arg2, String arg3);
public void AddScore(String arg1, String arg2, String arg3)
{
if (this.listView1.InvokeRequired)
this.BeginInvoke(new AddScoreHandler(this.AddScore), new object[]{ arg1, arg2, arg3 });
else
{
ListViewItem lvi = new ListViewItem(arg1);
lvi.SubItems.AddRange(new string[]{ arg2, arg3 });
this.listView1.Items.Add(lvi);
}
}