Cette réponse peut arriver un peu tard, mais peut-être que cela aidera les autres.
Dans de nombreux cas, il suffit d'indiquer le nombre d'enregistrements lus jusqu'à présent. Cela pourrait être fait en gérant l'événement DataTable.RowChanged. À partir d'une implémentation de test, j'ai pu vérifier que l'événement se déclenche pour chaque ligne ajoutée par DataAdapter.Fill-Method. Lors de la gestion de l'événement, vous pouvez obtenir le nombre d'enregistrements lus en consultant DataTable.Rows.Count-Property
Ce que je fais habituellement, c'est lire les données dans un thread d'arrière-plan, qui met à jour une étiquette ou une entrée de liste. La méthode qui met réellement à jour l'interface graphique met en mémoire tampon les mises à jour de l'étiquette afin que les modifications de l'interface graphique ne se produisent qu'une fois par seconde pour éviter le scintillement.
J'espère que cela vous aidera.
Sacha