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

Windows Forms Discussion :

[C#] Form qui plante quand on clic ailleurs..


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 74
    Points : 35
    Points
    35
    Par défaut [C#] Form qui plante quand on clic ailleurs..
    Bonsoir,
    voilà j'ai un problème avec un des mes formulaires. Je l'instancie dans mon formulaire principal (Form1) et je l'affiche avec Show(). Ce nouveau formulaire doit charger des fichiers, ce qui est assez lourd. Mais une fois affiché à l'écran, si je clique ailleurs que sur lui il devient tout blanc
    J'ai tenté un refresh à chaque incrément de la progressBar, invalidate, update... Si quelqu'un à une idée je suis preneur !

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    C'est parce que le chargement de tes fichiers est trop long


    Met ce chargement de fichier, au lancement de ta form, mais dans un thread à part pour éviter de "geler" l'affichage

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Il faut que j'implémente les threads dans mon appli ou juste sur le formulaire en question ? C'est possible sans tout exploser ? J'ai pas mal de formulaires... (J'ai mis des threads null part pour l'instant )

    Merci de ta réponse !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Le plus simple est d'utiliser un composant BackGroundWorker.

    Cela permet d'éviter de se poser des questions sur les problèmes de changements de thread, tout est intégré au composant.

  5. #5
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par jacpapac
    Il faut que j'implémente les threads dans mon appli ou juste sur le formulaire en question ?
    Juste au niveau des formulaires qui effectuent un traitement lourd. Sur une fenêtre, le thread principal est celui qui se charge de l'affichage. Si tu effectues un traitement lourd sur ce thread, l'affichage de sera plus géré d'où le phénomène de fenêtre blanche qui donne l'impression que l'application est plantée. Pour éviter ce problème il faut créer un autre thread qui se chargera d'effectuer le traitement lourd afin que le thread principal puisse toujours s'occuper de l'affichage sans problème.

    Citation Envoyé par NicolasG
    Le plus simple est d'utiliser un composant BackGroundWorker.
    Oui c'est le plus simple, mais ce composant n'est présent que depuis le Framework 2.0. Donc jacpapac, si tu utilises le Framework 2.0, fais une petite recherche sur ce BackGroundWorker (forum ou google, tu trouveras pas mal de chose ^^).

    Petit hors sujet au passage, même si on reste un peu dedans. Ce problème est lié à GDI je suppose. Je suis en train de commencer à m'intéresser à WPF et au Xaml et je me demande si ce problème est toujours d'actualité avec WPF ? Car de ce que j'ai cru comprendre ce n'est plus le cas

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 74
    Points : 35
    Points
    35
    Par défaut
    Voilà j'ai implémenté des threads et ça marche ! Je pensais ne pas y arriver à cause des paramètres et valeurs de retour mais j'ai pu contourner le problème grace à la FAQ C#.
    Par contre, j'instancie mon objet avec paramètres je lance le thread avec thread.start mais pour attendre la fin du thread j'ai mis thread.join(), c'est bien ce qu'il faut faire ?

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par NicolasG
    Le plus simple est d'utiliser un composant BackGroundWorker.

    Cela permet d'éviter de se poser des questions sur les problèmes de changements de thread, tout est intégré au composant.
    Oui, mais ce composant n'est dispo que dans le FX.NET 2.0

    Cependat, il y a cette implémentation qui est dispo:
    WinFormsEx

    A collection of IDesign’s helper classes and utilities for Windows Forms, including: BackgroundWorker for .NET 1.1, custom security controls wrapping ASP.NET 2.0 security providers and matching custom principals for any custom credential store, safe controls that can be called by any thread, a singleton Windows Forms application, network connection utility for disconnected applications, EventsHelper for safe synchronous and asynchronous event firing, visual events base classes, splash screen and imported functions from Win32 API, useful when interoperating with legacy applications.
    cf ici: http://www.idesign.net/idesign/Deskt...dex=5&tabid=11


    A+

Discussions similaires

  1. tMsgBox de type question qui plante quand on clique sur Annuler
    Par cutkiller042 dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 12/09/2012, 20h30
  2. Programme qui plante quand je passe une string.
    Par z980x dans le forum SL & STL
    Réponses: 4
    Dernier message: 23/01/2009, 00h40
  3. lecteur qui disparait quand on clic dessus
    Par Xann_71 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/07/2007, 11h55
  4. Application qui plante quand lancé par sans débugage
    Par bossun dans le forum Général Dotnet
    Réponses: 9
    Dernier message: 12/07/2007, 12h08
  5. Requete de stat qui plante quand rien pour un mois
    Par Christophe P. dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/02/2007, 18h35

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