У DataSet’а возможно выполнить фоновое обновление данных, в одном из двух режимов – обновление с запросом исходных данных или обновление только DataProcessor’а. При этом формирование новых данных происходит в отдельном потоке, не замораживая основной поток. После того как новые данные сформированы, в основном потоке происходит замена старых данных на новые. Подробнее:
Запускается фоновый поток. В нем:
Делается копия цепочки DataProducer’ов DataSet’а. Далее работаем с этой копией.
В зависимости от режима обновления, сбрасывается кэш либо у SourceDataProducer, либо у DataProcessor. При этом сбрасывается кэш и у всех зависимых DataProducer’ов.
Запрашиваем данные у NodeDataProducer. При этом у всех DataProducer’ов со сброшенным кэшем данные будут переформированы.
В основном потоке подменяем цепочку DataProducer’ов DataSet’а на копию из п.1.
Для корректной работы фонового обновления данных требуется:
Глобальная переменная DataSetCenter инициализирована.
В основном потоке при обработке Idle вызывается DataSetCenter.ProcessTasks.
Методы DataSet’а запуска фонового обновления данных:
Requery.
Немедленный запуск фонового обновления с запросом исходных данных.
BackgroundRequery.
Немедленный или отложенный (в зависимости от параметра Immediate) запуск фонового обновления с запросом исходных данных.
RequeryDP.
Немедленный запуск фонового обновления с обновлением только DataProcessor’а.