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

C# Discussion :

event - thread


Sujet :

C#

Vue hybride

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Par défaut event - thread
    Bonjour a tous,

    j'ai écrit une interface pour sélectionner un fichier
    qui se sert d'un objet (thread) qui lit le fichier ouvert et le copie en db
    a la fin du thread un evenement est soulevé et il lance une fenêtre qui indique
    des données sur le chargement.

    petit problème.

    comme prévu a la fin du thread la fenêtre s'ouvre, le thread se termine et la fenêtre se ferme. (on a pas le temps de lire les infos c'est instantané)
    j'ai mis un Sleep(10000); a la fin du thread.

    c'est une solution temporaire, j'aimerai que la fenêtre reste ouverte tout le temps, que l'utilisateur puisse la fermer a l'aide d'un bouton exit.

    merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut
    j'ai un peut de mal à te suivre mais je dirais au cas ou tu n'es pas vu que .Join() sur ton objet Thread te permet d'attendre la fin de l'execution de ton thread et que .ShowDialog() sur une Form te permet de bloquer l'execution du code.

    Je penses que ton problème ne se situe pas là (on ne c'est jamais remarque) > peux tu nous dire qui envoie l'evenement et qui le traite ?

  3. #3
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Si le traitement doit être dans un thread séparé, il n'en est pas forcément de même pour l'analyse de son résultat. Utilise un BackgroundWorker et abonne-toi à l'événement RunWorkerCompleted pour gérer l'affichage des résultats.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Par défaut
    bonjour a tous,

    merci pour vos réponses

    le .ShowDialog() bloque bien ma fenêtre mais lorsque je clic sur un de ces composant (bouton ou autre) l'application plante.

    voici le code qui initialise le thread, le lance et signale la fin

    form1.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    private void openFileBt_Click(object sender, System.EventArgs e)
    {
    	OpenFileDialog oFD = new OpenFileDialog();
     
    	oFD.InitialDirectory = ParamApp.InitialDirectory;
    	oFD.Filter = ParamApp.FileFilter ;
    	oFD.RestoreDirectory = true ;
     
    	if (oFD.ShowDialog() == DialogResult.OK) {
     
                         ...
     
            pi.thread += new ParsingInvoice.ThreadHandler (infoForm.onThreadEnd);			
    	myThread = new Thread(new ThreadStart(threadReadFile));
    	myThread.Start();					
        }				
    }
     
    private void threadReadFile () {
    	pi.OpenFile (); // ouvre le fichie du openfiledialog et le parcoure
    	pi.ThreadEnd (); //signale la fin du thread
    	infoForm.Show(); // fenêtre qui ne s'affiche qu'une fraction de seconde
    }	
     
    ------------------------------------
     
    thread.cs
     
    public void ThreadEnd () {
    	ThreadEventArgs e = new ThreadEventArgs (info);
    	if (thread != null) thread (this,e);			
    }

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 54
    Par défaut
    merci pour l'info BCmDev sa marche.

    je développe en java et la exceptionellement je dois faire un peu de c sharp.
    je ne connaissais pas BackgroundWorker

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

Discussions similaires

  1. Thread et Application principale: Event,Message..?
    Par ghost942 dans le forum Delphi
    Réponses: 17
    Dernier message: 30/05/2007, 18h32
  2. [Serveur] thread event
    Par moris113 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 04/01/2007, 08h47
  3. [C#] Thread et events dans une form
    Par farfadet dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/12/2006, 18h50
  4. [C# 1.1] - Event & Thread
    Par Erakis dans le forum Windows Forms
    Réponses: 11
    Dernier message: 11/07/2006, 00h20
  5. [C#]Thread, event/delegate et Form
    Par doccpu dans le forum Windows Forms
    Réponses: 28
    Dernier message: 01/08/2005, 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