Загрузка DataTable замедляется при привязке к DataGridView.Datasource

Я искал по всему, и я не могу понять это. Я работаю над пользовательским интерфейсом Winforms, который тянет большие объемы строк, которые мне нужно отобразить в DataGridView. Я уже прочитал все об ограничении числа строк и разбивке на страницы, и для меня нет абсолютно никакого хорошего способа сделать это. По сути, я работаю над элементом управления TargetDataViewer диспетчера расширенных событий для SQL Server 2008, который я написал для Codeplex.

http://extendedeventmanager.codeplex.com/

Я ограничен тем, что я могу сделать, основываясь на конкретной цели и как она представляет данные. Я пытаюсь выполнить потоковую передачу данных, которые были прочитаны из целевого объекта, в DataGridView, подобно тому, как Profiler или SQL Server Management Studio отображают данные во время их потоковой передачи. Я переписал много кода, и BackgroundWorker извлекает данные и обработка его в DataTable. Если я не установлю DataGridView.DataSource = DataTable, я могу загрузить более 300 000 строк данных в DataTable за несколько минут, это действительно быстро. Как только я добавляю DataTable в DataSource, он замедляется почти до полной остановки (вместо нескольких минут те же строки 300K могут занять 1/2 часа).

Я знаю, что проблема не в моем коде обработки, а в том, что он связан с DataGridView.DataSource, и у меня есть временный код, чтобы доказать это. Я не могу понять, как обойти это. Что касается производительности, я могу позднее связать элемент управления с таблицей данных после загрузки данных, но это действительно дурацкий пользовательский опыт. Я вижу, что многие люди жалуются на влияние производительности DataGridView при загрузке данных, так что это может быть просто ограничением? Есть идеи?

Ответы на вопрос(1)

Ваш ответ на вопрос