Bonjour à tous!
J'ai un problème sur le rafraichissement d'un contrôle DataGridView, et ce problème fait appel à des considérations générales sur le multiThread et le framework 2.0...
Tous les contrôles créé dans une application, sont créés dans le thread principal en toute logique.
Parfois, certain traitement sur un contrôle graphique peuvent prendre un certain temps, mais en général c'est assez rapide.
Mais le contrôle "DataGridView" fait exception avec sa propriété "datasource"!
Ici, si ma DataTable a plus de 5000 enregistrements (ce qui est souvent le cas dans l'entreprise pour laquelle je développe), le contrôle "DataGridView" se gèle sur l'interface utilisateur, toute la fenêtre se gèle d'ailleurs, car le thread principal fait un lourd traitement d'affichge graphique...
Code : Sélectionner tout - Visualiser dans une fenêtre à part monDataGridView.datasource = maDataTable
Alors voilà deux jours que je cherche une solution sans répis On trouve bcps de solutions à base de Delegate, qui n'arrangent pas le pb ici, car un "Invoke(delegate)" fait appel au thread de création du controle, et ici le control a été créé sur le thread principal....
Alors peut être pourrai je créer mon DataGridView sur un thread secondaire? Mais alors à ce moment là, avez vous une solution pour le "Me.Controls.add(maDataGridView)" qui plante, puisque "Me" (la Form principal) a été créé sur le thread principal?
Enfin je suis perdu, et je pense bien qu'il doit y avoir une solution quand même!
Allez j'attends vos conseils ou mieux: Solutions
Partager