Доброго времени суток всем!
Возникла необходимость изменения в таблице передавать в приложение для последующей обработки и редактирования отдельного файла на основе полученных изменений.
На данный момент реализовал так:
private void button3_Click(object sender, EventArgs e)
{
Initialize(); //подключаемся к бд
prev_list = _query("select * from log"); //получаем текущее состояние таблицы
Thread th = new Thread(checkDB); // запускаем "монитор"
th.Start(500);
}
bool run = true;
void checkDB(object sender)
{
while (run)
{
var curr_list = _query("select * from log"); //текущее состояние лог-таблицы
if (!ListEquals(curr_list, prev_list)) //если не равно предыдущему
{
info.Items.Add("Database changed");
info.Items.Add(string.Join(",", curr_list)); //выводим состояние таблицы
prev_list = curr_list;
_query("truncate table log"); //чистим лог к едрене фене
}
Thread.Sleep((int)sender);
}
}
Само обновление таблицы log происходит при помощи MySQL триггера.
И да, я знаю про таймеры, в потоке реализовал для проверки несколько другого аспекта.
Собственно, вопрос — есть ли более адекватные методы реакции на update/insert в mysql таблице(производящиеся через другое приложение), нежели текущий вариант?