Laden von DataTable langsam, wenn es an DataGridView.Datasource gebunden ist

Ich habe überall gesucht und ich kann das nicht herausfinden. Ich arbeite an einer Winforms-Benutzeroberfläche, die große Mengen von Zeilen abruft, die ich in einer DataGridView anzeigen muss. Ich habe bereits alles über das Begrenzen von Zeilenanzahl und Paging gelesen und es gibt absolut keine gute Möglichkeit für mich, dies zu tun. Grundsätzlich arbeite ich an der TargetDataViewer-Steuerung des Extended Events Manager für SQL Server 2008, die ich in Codeplex geschrieben habe.

http://extendedeventmanager.codeplex.com/

Ich beschränke mich darauf, was ich basierend auf dem spezifischen Ziel und der Darstellung der Daten tun kann. Ich versuche, die von einem Ziel gelesenen Daten in DataGridView zu streamen, ähnlich wie in Profiler oder SQL Server Management Studio Daten beim Streaming angezeigt werden. Ich habe viel Code neu geschrieben und einen BackgroundWorker zum Abrufen von Daten und Verarbeiten in eine DataTable. Wenn ich die DataGridView.DataSource nicht auf DataTable setze, kann ich in wenigen Minuten mehr als 300 KB Datenzeilen in die DataTable laden, sie läuft wirklich schnell. Sobald ich die DataTable zur DataSource hinzufüge, kommt sie fast zum Stillstand (anstelle einiger Minuten können dieselben 300K-Zeilen eine halbe Stunde dauern).

Ich weiß, dass das Problem nicht mein Verarbeitungscode ist, sondern spezifisch für die Bindung an die DataGridView.DataSource, und ich habe Timing-Code, um dies zu beweisen. Ich kann nicht herausfinden, wie ich das umgehen soll. Aus Gründen der Leistung kann ich das Steuerelement nach dem Laden der Daten zu spät an die Datentabelle binden, aber das ist eine wirklich beschissene Benutzererfahrung. Ich sehe viele Leute, die sich über die Auswirkungen von DataGridView auf die Leistung beim Laden von Daten beschweren. Irgendwelche Ideen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage