Синхронизация изменений в таблице с приложением C#?

Доброго времени суток всем!

Возникла необходимость изменения в таблице передавать в приложение для последующей обработки и редактирования отдельного файла на основе полученных изменений.

На данный момент реализовал так:

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 таблице(производящиеся через другое приложение), нежели текущий вариант?
  • Вопрос задан
  • 4387 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AlexeyVD
Вместо того, что бы каждый раз вытаскивать полностью таблицу log, не проще ли при ее изменении вставлять строку с информацией об изменении или измененные строки (смотря что вам нужно) в какую-нибудь таблицу состояний, и уже из вашего приложения мониторить эту маленькую табличку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы