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 :

[VB.NET]Time out (Application ne répond pas)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Par défaut [VB.NET]Time out (Application ne répond pas)
    Salut à tous, chers développeurs(euses)

    Je viens ici quérir un petit renseignement en espérant trouver réponse à un petit problème.

    Mon application consiste en un petit forumlaire qui sert à interroger un cube (ou grosse base de données)

    Le résultat est présenté par un DataGridView. Jusque là, ca semble logique.

    Seulement j'ai un petit soucis , lorsque je fais une requête qui me retourne un grand nombre de données qui se traduit par un très grand nombre de cellule dans mon DataGridView (2500 sur 50 par exemple), le programme se met en timeout et ne répond plus.

    On voit qu'il voudrait afficher les données car des scrollbar s'installent dans le datagridview, mais il n'arrive pas à afficher et "plante", ne répond plus. Est-ce que c'est normal que cela se produise ? Y-a-t-il une option à régler pour que les temps de traitement partent moins vite en time out? ou alors est-ce que j'ai tout simplement mal concu mon application???


    Merci à tous

    matt

  2. #2
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Salut, oui c'est normale lors d'une grosse opération le thread se bloque et donc ca freeze !

    Pour y remédier tu peux utiliser des threads :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim m as new Thread(AddressOf Procedure)
    m.Start
    Autre méthode qui consiste à utiliser un BackGroundWorker sur tu utilises le framework 2.0 :
    Utilisation d'un BackGroundWorker et tutos

    Comme ca tu n'auras plus de problemes
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Par défaut
    Salut et merci pour cette réponse. Génial ce composant BackgroundWorker !!

    Par contre j'ai encore une petite question avant de marquer

    Dans mon cas, ce qui prend surtout beaucoup de temps, c'est la manipulation des cellules du DataGridView pour une belle présentation (ex : coloration des cellules des en-têtes etc). Mais Le BackgroundWorker n'autorise pas la manipulation des controle de formulaire, y -a-t-il un autre composant qui le permet?

    Voila, Merci Beaucoup !!



    [EDIT] j'ai essayé avec la méthode des délégués, comme ils l'expliquent dans le tutorial qu'il y a sur le site que tu m as passé, mais ca freeze quand même l'application (voir plantage en cas de grosse requete)

    Déclaration du délégué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Delegate Sub ManipulationDuCellset(ByVal my_cellset)
    Invocation dans la méthode TRAITEMENT du BackGroundWorker
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Invoke(New ManipulationDuCellset(AddressOf displayCellSetSimply), my_cellset)
    Note : displayCellsetSimply est la méthode qui manipule les cellules de mon DataGridView à partir des données d'un CellSet (my_cellset)

    La je crois que je peux dire que c'est vraiment mon code qui est trop loud pour l'application ?

    Merci !!!

  4. #4
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Si le BGW autorise que tu manipules les elements de ta form mais seulement dans la methode "Progress" (pour une progressbar par exemple) et dans la méthode "Finish" (pour afficher les resultats).

    Par contre impossible dans la methode Do_Works à moins de créer une "opération inter threads" !

    Je ne vois donc pas ou es le probleme. Moi avec une listiew j'ai créer un systeme de recherche dans ma base de données qui comportent environ 30 000 fichiers. La recherche de la totalité de la BDD prends environ 4s avec un PC puissant ! La listview ajoute ces 30 000 fichiers sans probleme et sans laguer ! Vive le GBW

    Mais encore faut il savoir bien s'y prendre. Comme tu ne peux pas manipuler dans le Do_Event alors tu crées un tableau temporaire qui va contenir tout les résultats et puis dans l'évenement finish tu ajoutes tout cela à ton controle (listbox, listview, datagrid...)

    Bonne chance
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 69
    Par défaut
    Salut !

    J'ai un peu testé tout ca hier. Exemple : je fais toutes les opérations sur un tableau (ou cellset) puis au finish, je tente de remplir mon dataGridView avec le résultat (donc avec un cellset)

    Cela donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub BGW_Completed(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackGroundWorker.RunWorkerCompleted
     
    DataGridView.datasource = e.result
    et la j'ai l'erreur "Une exception a été levée par la cible d'un appel."


    Je sens qu'on va y arriver à la fin !!

    Merci beaucoup !!

  6. #6
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Je ne connais pas les datagridview donc je ne sais pas ce que la propriété datasource veut comme arguments ! Deja tu devrais faire attention aux conversions implicites car e.result est un type object et c'est peut etre pas le bon type... quoique tu aurais eu une CastInvalideExeption.

    Essaye avec une arraylist et ajoute les un par un et pas tout en un coup surtout si tu en as beaucoup, l'application va peter un cable ^^
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

Discussions similaires

  1. Time Out session( Application développée avec .net)
    Par Naceur84 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 31/05/2011, 15h11
  2. Réponses: 1
    Dernier message: 21/08/2006, 11h29
  3. [VB.NET]Form qui ne répond pas
    Par Pocel dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/07/2006, 10h42
  4. [VS.Net 2005][ClickOnce] Mon application ne démarre pas
    Par Vonotar dans le forum Visual Studio
    Réponses: 3
    Dernier message: 07/12/2005, 14h44

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