begin process at 2012 02 15 04:43:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Base de données

 > 

ADO.NET

 > 

Multithreading sur DataGridView


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Multithreading sur DataGridView

mardi 1 août 2006 à 21:07:55 | Multithreading sur DataGridView

Neow26

Membre Club

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.

mardi 1 août 2006 à 21:27:20 | Re : Multithreading sur DataGridView

pymaster

Bonjour ! Je ne vois pas de moyen pour suspendre entièrement les évènements, mais lorsque j'avais ce genre de prob avec des threads j'utilisais les mutex ( mutual exclusion ) et Semaphore pour limiter l'accès de certaines données à un nombre restrain de Thread Par exemple : Dans une classe commune au deux tu fais la décaration Public shared mMutex as Mutex Dans ton code qui ne doit pas être exécuté par 2 thread en même temps mMutex.waitOne() Bout de code mMutex.ReleaseMutex() Bonne chance, PY
mardi 1 août 2006 à 21:40:40 | Re : Multithreading sur DataGridView

Neow26

Membre Club
Merci pour ta réponse, mais ça ne réponds pas à mon problème car les événements qui entrainent l'exception découlent du changement de la source de données, ce n'est pas moi qui les gère.

C'est pour ça qu'il faudrait que j'arrive à faire en sorte que les événements ne soient plus relevés.
vendredi 31 décembre 2010 à 17:03:45 | Re : Multithreading sur DataGridView

devsharp01

Bonjour,

J'ai eu le même problème (4 ans plus tard...) et la solution était dans la gestion du DataSource par le DataGridView. En effet, je faisais un :

DataTable.Rows.Clear();

Alors que ce DataTable était relié dans le DataSource de mon DataGridView... Donc forcément, même en effectuant des DataGridView.DataSource = ... à outrance, ça n'a pas suffit.

Le but étant d'effectuer qu'une seule fois un DataSource = ... Puis de faire le reste à coup de Refresh().


Cette discussion est classée dans : source, dataset, usercontrol, datagridview, multithreading


Répondre à ce message

Sujets en rapport avec ce message

[vb.net] multithreading... [ par Lucyberad ] Bonjour a tous, j'aimerais savoir ou est-ce que je peut trouver une source integrant un systeme multithread (clair, lisible, compréhensible quoi) je r datagridview VB 2005 [ par ralebole ] Bonjour voila mon probleme je voudrais ecrire dans un dataset et afficher les données de se dataset dans un datagridview.TextBox1Button1DataGridView1D Récupération les données d'un DataGridView dans un DataSet [ par florentbdi ] Bonjour,je developpe en VB .NET sous visual studio 2005.Malgré mes recherches , je n'ai pas trouvé de solution simple a mon problème qui doit surement Charger des images dans un datagridview via un dataset [ par bernardo67 ] Bonjour,J'ai une base de données access avec une table "MesImages" comprenant les champs "IdImage" et "NomImage".Du côté de mon application, j'ai un d Enregistrer les modifications d'un DataGridview dans la base sql (dataset) [ par dimitriusai ] Bonsoir,j'aimerais savoir comment faire pour enregistrer les modifications que je fais dans une table (datagidview) étant lié a un dataset (ma table s Ordonner un DataSet grâce à un DataGrid [ par Papymuzo ] Bonjour à tous (et à toutes ^^), Je vous explique l'état des lieux : je remplis un DataGridView grâce à un DataSet. Maintenant, voilà mon problème : Problème de refresh Datagridview suite à un Fill de mise à jour sur le dataset [ par Jaxom ] Bonsoir, J'ai un dataset, un bindingnavigator, un tableAdapter et un databindings. Au bout d'un certain temps, je demande à mon dataset de se mettre Problème de mise à jour DataSet BDD [ par LaNono ] Bonjour à tous, j'ai une petite application qui gère une base de données d'une seule table et qui affiche son contenu dans un contrôle DataGridView. Format date datagridview [ par dvlpt ] Bonjour,Je rencontre un soucis avec l'affichage de la date dans un datagridview.Je passe une requête à une base access que je récupère dans un dataset afficher un dataset dans un datagridView [ par cyberfinger01 ] Bonjour tout le monde,qq pourait-il me dire comment je peur faire pour afficherun DATASET dans un DATAGRIDVIEW  a l'aide de codeparce que je n'arrive


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,264 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales