IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

[.NET 2.0] Traitement graphique Lourd, exécuter dans un autre thread?


Sujet :

Dotnet

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 61
    Points : 28
    Points
    28
    Par défaut [.NET 2.0] Traitement graphique Lourd, exécuter dans un autre thread?
    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"!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monDataGridView.datasource = maDataTable
    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...

    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

  2. #2
    Membre actif Avatar de scifire
    Inscrit en
    Juillet 2004
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 226
    Points : 245
    Points
    245
    Par défaut
    Salut.
    Je suis sur que l'utilisateur ne s'interesse pas a tous les 5000 enregistrement dans un moment donne. Il n'a pas besoin que pour quelque dixaines alors je crois que tu dois regarder ca :
    Custom Paging (en anglais) et encore un super article http://www.codeproject.com/aspnet/PagingLarge.asp

    Bon courage.
    Even the biggest journey, starts with a single step.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 61
    Points : 28
    Points
    28
    Par défaut
    Merci pour ta réponse!

    Alors en fait, en effet, au lieu de partir sur une solution à base de Threads, j'aurai dû étudier une solution d'affichage partiel de la table affiché!

    Un DataGridView a un paramètre VirtualMode, qui si il est à vrai, permet de ne charger graphiquement, que ce qui doit être affiché... Sur le déplacement du scroll, le reste est chargé petit à petit...

    Mais voilà, mon nouveau pb, et qu'il semblerai que si la propriété VirtualMode est mis à True, on ne peut plus trier le tableau! d un clic sur la clonne! Finish! Et pour le moment, je n'ai pas de solution élégante

Discussions similaires

  1. Importer l'exécutable dans une autre machine
    Par medirama dans le forum Débuter
    Réponses: 1
    Dernier message: 24/03/2013, 19h53
  2. Rédiriger l'exécutable dans un autre repertoire
    Par vg-matrix dans le forum EDI
    Réponses: 5
    Dernier message: 14/07/2010, 19h47
  3. implementer un projet exécutable dans un autre
    Par univermiss dans le forum Visual Studio
    Réponses: 1
    Dernier message: 10/06/2009, 01h18
  4. Réponses: 1
    Dernier message: 28/02/2007, 19h09
  5. Réponses: 8
    Dernier message: 10/01/2007, 21h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo