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