Cargando DataTable lento cuando está enlazado a DataGridView.Datasource

He buscado por todas partes y no puedo entender esto. Estoy trabajando en una interfaz de usuario de Winforms que extrae grandes volúmenes de filas que necesito mostrar en un DataGridView. Ya he leído todo acerca de cómo limitar los recuentos de filas y la paginación, y no hay absolutamente ninguna buena manera de hacerlo. Básicamente, estoy trabajando en el control TargetDataViewer del Extended Events Manager para SQL Server 2008 que escribí en Codeplex.

http://extendedeventmanager.codeplex.com/

Estoy limitado a lo que puedo hacer según el objetivo específico y cómo presenta los datos. Lo que estoy tratando de hacer es transmitir los datos que se han leído de un destino en el DataGridView, de manera similar a como Profiler o SQL Server Management Studio muestran los datos a medida que se transmiten. Reescribí una gran cantidad de código y tengo un BackgroundWorker que extrae datos. y procesándolo en un DataTable. Si no configuro DataGridView.DataSource = DataTable, puedo cargar más de 300K filas de datos en DataTable en unos pocos minutos, realmente se ejecuta rápidamente. Tan pronto como agrego el DataTable al DataSource, este se ralentiza casi hasta detenerse (en lugar de unos minutos, las mismas filas de 300K pueden durar 1/2 hora).

Sé que el problema no es mi código de procesamiento, es específico para estar vinculado a DataGridView.DataSource, y tengo un código de tiempo para demostrarlo. No puedo averiguar cómo solucionar esto. Para el rendimiento, puedo vincular el control a DataTable después de que se carguen los datos, pero esa es una experiencia de usuario realmente horrible. Veo mucha gente quejándose del impacto en el rendimiento de DataGridView al cargar datos, por lo que esto puede ser una limitación con la que me quedo. ¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta