Salut tout le monde,
Je suis en train de réaliser un petit usercontrol pour une application qui pour d'afficher des données et de les conserver en mémoire.
Le principe est que je gère un DataSet en static dans lequel je remplit la collection DataTable.
Lors de l'éxécution d'une nouvelle requête je vérifie sa présence dans le DataSet, si elle existe je raffraichis ma table et je l'affecte comme source à mon DataGridView, sinon j'ajoute une table au DataSet et je l'affecte comme source au DataGridView.
Jusque là tout se passe sans soucis, je peux avoir 2 fois mon usercontrol sur la même source.
Après pour rendre la main à l'utilisateur quand j'exécute une requête, j'exécute mon traitement d'ajout ou de raffraichissement de table dans un nouveau thread. Quand j'ai des sources différentes pour chaque usercontrol tout marche bien, mais quand j'ai plusieurs usercontrol sur la même source, j'ai une exception :
L'exception suivante s'est produite dans le DataGridView :
System.IndexOutOfRangeException: L'index 0 n'a pas de valeur.
à System.Windows.Forms.CurrencyManager.get_Item(Int32 index)
à System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetError(Int32 rowIndex)
J'avais une erreur identique au début (sans multithreading) parce que je ne mettais pas à Nothing la source de mon DataGridView.
Voilà mon problème, il faudrait que j'arrive à suspendre les événements des autres instances de mon usercontrol quand j'effectue un traitement, mais je ne vois pas comment. Si quelqu'un a une idée ou un moyen de controurner le problème je suis preneur.
Merci.