Ładowanie DataTable Slow When Bound do DataGridView.Datasource

Szukałem wszystkiego i nie mogę tego rozgryźć. Pracuję nad interfejsem użytkownika Winforms, który ciągnie duże ilości wierszy, które muszę wyświetlić w DataGridView. Przeczytałem już o ograniczaniu liczby wierszy i stronicowania i nie mam absolutnie żadnego dobrego sposobu, aby to zrobić. Zasadniczo pracuję nad kontrolą TargetDataViewer w Extended Events Manager dla SQL Server 2008, który napisałem na Codeplex.

http://extendedeventmanager.codeplex.com/

Jestem ograniczony do tego, co mogę zrobić w oparciu o konkretny cel i jak prezentuje dane. Co próbuję zrobić, to strumień danych, które zostały odczytane z obiektu docelowego do DataGridView podobne do tego, jak Profiler lub SQL Server Management Studio wyświetlają dane podczas strumieniowania. Przepisałem dużo kodu i mam dane BackgroundWorker i przetwarzanie go w DataTable. Jeśli nie ustawię DataGridView.DataSource = DataTable, mogę załadować 300K + wiersze danych do DataTable w ciągu kilku minut, to naprawdę działa szybko. Jak tylko dodam DataTable do DataSource, to powoli się zatrzymuje (zamiast kilku minut te same 300K wierszy mogą zająć 1/2 godziny).

Wiem, że problem nie jest moim kodem przetwarzania, jest specyficzny dla powiązania z DataGridView.DataSource i mam kod czasowy, aby to udowodnić. Nie wiem, jak to obejść. Dla wydajności mogę spóźnić powiązanie formantu z tabelą DataTable po załadowaniu danych, ale to jest naprawdę kiepskie doświadczenie użytkownika. Widzę, że wiele osób narzeka na wpływ wydajności DataGridView podczas ładowania danych, więc może to być tylko ograniczenie, z którym się utknąłem? Jakieś pomysły?

questionAnswers(1)

yourAnswerToTheQuestion