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 :

[C#] Comment attendre un evenement ?


Sujet :

C#

  1. #1
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut [C#] Comment attendre un evenement ?
    bonjour

    Voila je dois creer une fonction qui imprime un document et renvoie un booleen indiquant si l operation s est bien passée.
    Le probleme c'est que l impression est asynchrone, en effet l'imprimante me renvoie un evenement lorsque l impression est terminee.
    Comment "attendre" cet evenement afin de renvoyer true ou false dans ma fonction?

    Merci

  2. #2
    Membre expérimenté
    Avatar de freddyboy
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2003
    Messages
    810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2003
    Messages : 810
    Points : 1 696
    Points
    1 696
    Par défaut Re: [c#] attendre un evenement
    Citation Envoyé par meli0207
    bonjour

    Voila je dois creer une fonction qui imprime un document et renvoie un booleen indiquant si l operation s est bien passée.
    Le probleme c'est que l impression est asynchrone, en effet l'imprimante me renvoie un evenement lorsque l impression est terminee.
    Comment "attendre" cet evenement afin de renvoyer true ou false dans ma fonction?

    Merci
    Pour voir comment envoyer des evenements :
    http://freddyboy.developpez.com/dotnet/articles/events/

    @+
    Someday I will be the most powerful Jedi !

    Freddyboy - Blog

  3. #3
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    non mais je sais comment envoyer un evenement, en l'occurence c'est SerialPort qui m'envoie un evenement et je voudrais, selon les donnees que je recois renvoyer un booleen indiquant le resultat de l'impression ...

    en gros :
    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
     
    bool imprimer()
    {
    impression();
     
    //attendre l evenement renvoyé par SerialPort
    ...
     
    //test des donnees recu
    ...
    if (ok)
    return true;
    else
    return false;
    }

  4. #4
    Membre habitué Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Points : 183
    Points
    183
    Par défaut
    tu dois t'abonner à l'event DataReceived de SerialPort comme ceci (utilise l'intellissence pour que la méthode serialPort_DataReceived soit générée automatiquement ( appui sur tab après avoir tapé serialPort.DataReceived+= )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
    }

  5. #5
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    oui mais la ca sera fait dans une autre methode, moi je veux que ce soit la methode qui lance l impression qui renvoie ensuite true ou false...

  6. #6
    Membre habitué Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Points : 183
    Points
    183
    Par défaut
    c'est un peu dommage que ton impression soit bloquante mais si c'est ce que tu veux... tu peux créer une classe qui 'occupe de faire ton impression avec une donnée membre de type booléen initialisé à false (IsPrinted), et dans ton evénement tu passe IsPrinted à true. dans la méthode impression, apres impression tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    while(!IsPrinted)
    {}
    mais je ne saurais trop te conseiller d'envisager le comportement de ton appli autrement (ou au moins de débloquer l'attente au bout d'un certain temps) car en cas de problème de retour de donnée, ton appli restera bloquée...

  7. #7
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    ok merci!!!

  8. #8
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    del-dongo a raison a eviter aboslument meme si tu met ca sur un autre thread.

  9. #9
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par zeavan
    del-dongo a raison a eviter aboslument meme si tu met ca sur un autre thread.
    comment faire alors?? je n'ai pas d'autre choix...

  10. #10
    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
    Je pense qu'il faut séparer deux notions dans tout ca. Le fait que l'envoi des données d'impression se soit bien passé et le fait que l'impression se soit bien passée.

    Dire que l'envoi s'est bien passé et que l'imprimante va maintenant faire son boulot est peut être suffisant dans ton cas, sachant qu'il y a toujours moyen d'indiquer par la suite que l'imprimante a rencontré un problème.
    Pas de questions techniques par MP

  11. #11
    Membre habitué Avatar de meli0207
    Inscrit en
    Novembre 2004
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 208
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par del-dongo
    mais je ne saurais trop te conseiller d'envisager le comportement de ton appli autrement (ou au moins de débloquer l'attente au bout d'un certain temps) car en cas de problème de retour de donnée, ton appli restera bloquée...
    comment faire pour debloquer l'attente au bout d'un certain temps?

  12. #12
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par meli0207
    Citation Envoyé par del-dongo
    mais je ne saurais trop te conseiller d'envisager le comportement de ton appli autrement (ou au moins de débloquer l'attente au bout d'un certain temps) car en cas de problème de retour de donnée, ton appli restera bloquée...
    comment faire pour debloquer l'attente au bout d'un certain temps?
    Heu la meilleure façon de debloquer la situation serait que tu prennes en considération les suggestions de StormimOn
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

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

Discussions similaires

  1. [C#] Comment une thread peut-elle attendre un evenement?
    Par legillou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/07/2006, 15h58
  2. [Thread] comment attendre la fin d'un thread?
    Par billynirvana dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 24/08/2005, 10h43
  3. [vb.net][tab] comment empecher un evenement de se produire?
    Par graphicsxp dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/07/2005, 15h18
  4. Comment Attendre la fin d'un Processus
    Par mr_titi dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/06/2003, 16h35
  5. [VB6] attendre un événement pour continuer l'exécution
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 12/11/2002, 13h08

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