Ta odpowiedź może przyjść trochę późno, ale może pomoże innym.
W wielu przypadkach wystarczy podać liczbę dotychczas odczytanych rekordów. Można to zrobić, obsługując zdarzenie DataTable.RowChanged. Z testowej implementacji mogłem sprawdzić, czy zdarzenie odpala się dla każdego wiersza dodanego przez DataAdapter.Fill-Method. Podczas obsługi zdarzenia możesz odczytać rekordy liczbowe, patrząc na DataTable.Rows.Count-Property
To, co zwykle robię, to odczytywanie danych w wątku w tle, który aktualizuje etykietę lub wpis w polu listy. Metoda, która faktycznie aktualizuje gui, buforuje aktualizacje etykiety, dzięki czemu zmiany gui występują tylko raz na sekundę, aby zapobiec migotaniu.
Mam nadzieję, że to pomoże.
Sascha