All operations in iGrid, including its events, are synchronous.
The CustomDrawCell event is raised only when a cell must be redrawn. For instance, when it becomes visible in the viewport or when its value has been changed. If you need to force iGrid to redraw a cell, use the DrawCell method or even Refresh.
And if I understand the logic of your app properly, you do not want to store progress bar values in iGrid cells and want to retrieve them dynamically from the underlying recordset in your CustomDrawCell event handler. This approach will slow down the performance of your grid a lot as the CustomDrawCell event can be raised many times for the same cells while the user sees them in the viewport (for instance, during scrolling). In fact, you will need to reposition the current record many times a second for those cells. I recommend that you copy all required values into iGrid cells and access them from this "native store".