FireDAC asynchronous synchronization overhead during high-frequency UI updates
0 reputation · 10 Nov 2022, 16:37 UTC
When utilizing FireDAC's multi-threaded architecture to fetch data in the background, the goal is to maintain a responsive interface. However, pushing high-frequency updates from a background TFDQuery thread to the main UI thread via TThread.Synchronize often results in message queue saturation.
In high-concurrency scenarios, the overhead of frequent synchronization calls can lead to interface stuttering, despite the operation being asynchronous. While the Active property allows for background execution, the framework lacks a native mechanism for batch result sets into live UI grids without manual logic that risks blocking the main thread message loop.
What is the measurable performance threshold for TThread.Synchronize calls when processing thousands of individual row updates per second? Is there a native FireDAC configuration to batch these asynchronous updates before they hit the UI thread to prevent message loop starvation?