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

VB.NET Discussion :

datagridview et fermeture de form


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 401
    Par défaut datagridview et fermeture de form
    Bonjour,

    j'ai une fenêtre qui met environ 10 sec avant de se fermer.
    j'ai identifier ce que je pense être le coupable, c'est le datagridview qui est sur la form.
    Si je ne le remplit pas la form se ferme immédiatement.

    code simplifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub _BackgroundWorker_historique_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles _BackgroundWorker_historique.DoWork
       chp_historique.DataSource = Ici_Une_Data_Table
    End Sub
    J'voudrais bien un peu d'aide car je ne sais pas comment résoudre ce problème.


    PS : le datagridview à très peu de ligne, inférieur à 10

    Ps2 : j'viens de trouver aussi que le pb vient du fait que le remplissage se fait dans un BackgroundWorker.DoWork.
    Si je lance en dehors pas de PB.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Par défaut
    Bonjour,

    Je tente une réponse sans être sur car je n'utilise pas ce genre de connexion.
    Le fait de connecter une datatable directement au datagridview maintient la connexion à la BD ouverte, dans le cas ou cette datatable est connectée à un BD en lecture écriture non ? D'où la fermeture de la connexion par le garbage collector lorsque l'on ferme la fenêtre (là je suis pas trop sur).

    Pour ma part je connecte et déconnecte la base de donnée à un objet métier pour chaque requête sur la base (injectée via une méthode de l'objet métier), l'objet métier contenant une une bindinglist(of ..) instanciée via la requête cette bindinglist étant la source de donnée du datagridview. Pour plusieurs centaines de lignes la fermeture de la form contenant le datagridview est instantanée.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 401
    Par défaut
    Merci d'avoir essayé mais je dirais non pour plusieurs raisons

    Dans un premier temps ma connexion est global au projet
    (Le dev à beaucoup ouverture/fermeture de fenêtre et parfois avec des personnes distantes, donc une réouverture à chaque fois serait trop long).

    Si je suis ton explication cela n'explique pas pourquoi sans le BackgroundWorker (traitement multitâche) le travaille se fait correctement.

    Et mon datatable n'a plus de lien avec la bdd, il est en mode déconnecté.


    Si tu as d'autre idée je suis preneur

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Par défaut
    Bonjour,

    Zut j'avais pas vu le PS2 (je suis plutôt XBox ) là je sèche

  5. #5
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    As-tu interrompu le BackGroundWorker avant le close de l'appli ?

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 199
    Par défaut
    c'est déjà étonnant que le datagrid veuille bien un datasource sur un autre thread !
    tu peux charger les données sur un autre thread, mais il faut les assigner à l'interface graphique sur le thread principal


    Citation Envoyé par Geo2A Voir le message
    Bonjour,

    Je tente une réponse sans être sur car je n'utilise pas ce genre de connexion.
    Le fait de connecter une datatable directement au datagridview maintient la connexion à la BD ouverte, dans le cas ou cette datatable est connectée à un BD en lecture écriture non ? D'où la fermeture de la connexion par le garbage collector lorsque l'on ferme la fenêtre (là je suis pas trop sur).
    un datatable n'est qu'un stockage des données, donc la connextion n'est pas gardé
    de plus fermer une connexion prend quelques millisecondes dans le pire des cas

    quant au garbage collector, il n'est pas synchrone donc ne peut pas bloquer le thread principal (il n'est d'ailleurs appelé que quand l'os a besoin de mémoire)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 401
    Par défaut
    Envoyé par Pol63

    c'est déjà étonnant que le datagrid veuille bien un datasource sur un autre thread !
    En théorie non, justement j'avais une croix rouge à place du datagridview et dans un autre poste on ma conseillé le BackGroundWorker (que je découvre)


    Envoyé par Graffito

    As-tu interrompu le BackGroundWorker avant le close de l'appli ?
    je découvre le BackGroundWorker et je savais pas qu'il fallait le fermer et comment fait on ?

  8. #8
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    je découvre le BackGroundWorker et je savais pas qu'il fallait le fermer et comment fait on ?
    BackGroundWorker.CancelAsync()

  9. #9
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2003
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2003
    Messages : 401
    Par défaut
    en fait j'ai testé cette partie avant de répondre tout à l'heure, et vu que ça fonctionnait encore moins je me suis dit que ce n'était pas ça

    j'ai mis BackGroundWorker.CancelAsync() dans l’évènement FormClosing et pour le coup la fenêtre ne se ferme pas du tout.
    quand le code passe sur BackGroundWorker.CancelAsync() , ça annule le FormClosing comme pour un e.cancel=true

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fermeture des formes
    Par senda dans le forum C#
    Réponses: 3
    Dernier message: 02/04/2008, 23h49
  2. Fermeture de form étrange
    Par Gdal dans le forum VB.NET
    Réponses: 5
    Dernier message: 05/04/2007, 21h29
  3. Problème de fermeture de forme ShowModal
    Par keisha dans le forum Delphi
    Réponses: 5
    Dernier message: 12/09/2006, 19h33
  4. [Form] ordre de fermeture des forms
    Par ip203 dans le forum IHM
    Réponses: 2
    Dernier message: 14/06/2006, 14h08
  5. [VB.NET] thread interrompu lors d'une fermeture de form ?
    Par HULK dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/01/2006, 15h00

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