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 :

plantage du formulaire


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Points : 58
    Points
    58
    Par défaut plantage du formulaire
    Bonjour tout le monde ,

    je suis entrain de créer un programme qui transfère les données d'un table d'une base de données à une autre alors j'ai mis un prgressbar pour montrer a l'utilisateur l'état d'avancement de la copie des données .

    alors mon problème c'est qu'on je essaye de déplacer mon formulaire ou de l réduire alors il devient tout blanc et il ne revient a son état normale que après le traitements du bouton. comment je peux éviter ce plantage ?

    merci d'avance.

  2. #2
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Peut-être en exécutant le code dans un backgroundworker.

    Ou en faisant un refresh sur l'évènement concerné, ceux sont juste des idées .
    Geeker c'est comme manger, on ne peut pas s'en passer !!!

    Tout est objet !!!

    ____________________________________

    http://www.geekingmania.com

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    une application .net est exécutée sur le thread principal, ce thread s'occupe des évènements et du rafraichissement de l'interface graphique
    aussi lors d'un traitement, le rafraichissement est bloqué
    quand il y a 3 lignes de code sur un bouton pas de soucis, mais quand on écrit du code qui dépasse une seconde, ca devient génant (application figée "ne répond pas")

    dans ce cas il faut déporter les traitements dans un autre thread
    soit en instanciant un thread directement en lui disant quelle sub exécuter
    soit en utilisant un backgroundworker ; c'est un objet qui encapsule des choses utiles pour la manipulation d'un thread

    ca équivaut en mode en pas à pas à avoir plusieurs lignes jaune qui avancent en meme temps dans le code à des endroits différents

    à partir d'un thread autre que le principal, il est impossible d'interagir avec l'interface graphique, pour ca il faut repasser temporairement sur le thread principal, soit par un délégué, soit par l'évènement qui sert à ca avec le backgroundworker

    le multithreading est à utiliser avec des pincettes, plus on fait de choses avec, plus on de chances d'avoir des plantages, il faut alors apprendre à sécuriser le code pour qu'il devienne "thread safe" (mot trouvé souvent dans l'aide msdn)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    Merci pour vos réponses , mais je sais comment manipuler les thread et le background worker , mais je n'arrive pas à toucher au thread principl (form)
    alors comment je peux repasser temporairement sur le thread principal ?

  5. #5
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    En mettant ton bout de code sur le thread principal, que tu appelles sur le thread secondaire.
    Geeker c'est comme manger, on ne peut pas s'en passer !!!

    Tout est objet !!!

    ____________________________________

    http://www.geekingmania.com

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    Dacord je vais essayer cette méthode .

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Points : 58
    Points
    58
    Par défaut
    j'ai créer une methode qui s'occupe de changer dans le formulaire et j'ai fait appel à cette méthode au niveau de backgroundworker_do_work et je ne pas toujours toucher au thread principal .

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le backgroundworker relaye 2 de ses évènements sur le thread principal, dont reportprogress
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    je pense que il y'a avoir une exception dû au que le backgroupworker va essai de modifier un ressource qui est crée par le thread principale.

Discussions similaires

  1. plantage ouverture formulaire -> trop de mémoire utilisée ?
    Par homerlehamster dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/07/2012, 09h38
  2. Plantage et perte de formulaire/etat
    Par Mimisio dans le forum IHM
    Réponses: 3
    Dernier message: 09/08/2007, 09h58
  3. Réponses: 6
    Dernier message: 27/07/2006, 17h24
  4. Sous formulaire dépendant d'une liste déroulante : plantage
    Par Goldenduck4000 dans le forum Access
    Réponses: 3
    Dernier message: 23/05/2006, 09h06
  5. Création de formulaire en VBA - Plantage
    Par Shansson dans le forum Access
    Réponses: 2
    Dernier message: 18/04/2006, 15h48

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