6.5. Фоновое обновление данных

У DataSet’а возможно выполнить фоновое обновление данных, в одном из двух режимов – обновление с запросом исходных данных или обновление только DataProcessor’а. При этом формирование новых данных происходит в отдельном потоке, не замораживая основной поток. После того как новые данные сформированы, в основном потоке происходит замена старых данных на новые. Подробнее:

  1. Запускается фоновый поток. В нем:

    1. Делается копия цепочки DataProducer’ов DataSet’а. Далее работаем с этой копией.

    2. В зависимости от режима обновления, сбрасывается кэш либо у SourceDataProducer, либо у DataProcessor. При этом сбрасывается кэш и у всех зависимых DataProducer’ов.

    3. Запрашиваем данные у NodeDataProducer. При этом у всех DataProducer’ов со сброшенным кэшем данные будут переформированы.

  2. В основном потоке подменяем цепочку DataProducer’ов DataSet’а на копию из п.1.

Для корректной работы фонового обновления данных требуется:

  1. Глобальная переменная DataSetCenter инициализирована.

  2. В основном потоке при обработке Idle вызывается DataSetCenter.ProcessTasks.

Методы DataSet’а запуска фонового обновления данных:

  1. Requery.

    Немедленный запуск фонового обновления с запросом исходных данных.

  2. BackgroundRequery.

    Немедленный или отложенный (в зависимости от параметра Immediate) запуск фонового обновления с запросом исходных данных.

  3. RequeryDP.

  4. Немедленный запуск фонового обновления с обновлением только DataProcessor’а.