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 :

creer un Evenement


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut creer un Evenement
    Bonjour,

    J'ai créé une DLL et j'aimerais créer un evenement a l'appli cliente pour signaler si une procédure s'est bien passée ou non.

    Détail : Pour info, la DLL gère le Bancontact et c'est pour voir s'il n'y a pas eu d'erreur lors de l'envois de ma trame.

    J'ai déjà cherché un peu sur le forum mais je n'ai rien trouvé de concluant

    Merci bcp :o)

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Simple

    Soit ta procédure renvoie un code pour dire "OK ou Not OK"... soit dans ta DLL tu crées un delegate, un event, et ton application viendra ensuite fournir un delegate (comme pour les event boutons, userControl, etc...) qui sera appelé
    quand tu "leveras" l'evenement dans ta DLL... à condition que ca soit bien une DLL C#... Et si c'est une dll CSharp ou .Net, alors, n'emplois plus le mot DLL mais Assembly... comme cela, on n'aura pas à se poser la question si c'est une dll managée ou non managée

    The Monz, Toulouse

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut
    Merci de la réponse rapide.
    C'est une assembly alors ;o)
    Si je comrpends bien, Mon "delegate" est comme le "Onclic" d'un bouton ?
    J'ai bien une procédure qui me renvoie le Ack ou Nack de ma trame envoyée.
    Je vais donc essayer de créer un Délégate

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut
    D'un autre coté, j'aurai ptet pas besoin d'un evenement si je retourne une valeur de ma classe.
    je vais y refléchir...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Par défaut
    Bon, j'ai pris la solution de renvoyer un booleen.
    Mon probleme est maintenant autre, je m'explique.
    Comment Effectuer une sortie ce l'assembly a une certain moment avec un code d'erreur en retour.
    Voici une partie du code...

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
            //Propriétés
            public static int CType_carte = 1;
            public static string pCom_Port = "COM4";
            public static long pAmount = 30; //30 valeur de TEST
            public static int pNbrOfRetry = 3; //Nbr d'essai par défaut
     
            private static int pAction = 0;
            private static int pChoix = 0;
            private static int CptTrame = 10; //Compteur de trame
            private static int numError = 0;
     
            //CONSTANTES
            //FIELDS
            const int Field_VIC_TX_AMT = 3; //Montant en eurocent
            const int Field_CARD_ID_DISP = 11;
            const int Field_TX_TYPE = 12;
            const int Field_VIC_CARD_IND = 16;
            const int Field_VIC_CMD_CODE = 17;
            const int Field_VIC_TO = 20; //Délai d'insertion de carte
            const int Field_VIC_TX_ID = 21; //Identification de la transaction
            const int Field_CURCY = 23;
            const int Field_VIC_CUST_IND = 25;
            const int Field_VIC_TYPE = 31;
            const int Field_OPERATOR_NR = 143;
            const int Field_VIC_BM_APP_ID = 171;
     
            //Erreurs
            const int Erreur_TrameNonRecue = 1;
     
            //VIC_MSG_CODE
            const int vmc_debit_request = 1;
            const int vmc_cancel = 2;
            const int pdv_debit_result = 3;
            const int pdv_error = 4;
     
            //Méthodes
            private static SerialPort sp;
     
            public static void Action(int Par_Action)
            {
                switch (Par_Action)
                {
                    case 1:     //Annuler une transaction (VMC_Annule)
                        pAction = vmc_cancel;
                        pChoix = 3;
                        break;
                    case 4:    //BC-MC
                        pAction = 5;
                        pChoix = 4;
                        break;
                    case 5:    //Transaction BC avec montant dans pAmount
                        pAction = vmc_debit_request;
                        pChoix = 5;
                        break;
                }
                InitTerminal();
            }
     
            public static void InitTerminal()
            {
                //Procédure qui initialise le Terminal Bancontact
     
                //on initialise la trame a envoyer
                MemoryStream _memoryStream = new MemoryStream();
                BinaryWriter _binaryWriter = new BinaryWriter(_memoryStream, Encoding.UTF8);
     
                _binaryWriter.Write(Trame_KISS());
     
                byte[] monBufferEcriture = new byte[_memoryStream.Length];
                monBufferEcriture = _memoryStream.ToArray();
     
                //Il faut maintenant envoyer le tout sur le port.
                sp.Write(monBufferEcriture, 0, monBufferEcriture.Length);
                bool sw=false;
                int Cpt = 0;
                while (sw == false && Cpt < pNbrOfRetry)
                {
                    Cpt++;
                    sw = AckNack(CptTrame);
                    if (sw)
                    {
                        Console.Write("Commande passée\n" );
                    }
                    else
                    {
                        Console.Write("Commande non passée\n");
                    }
                }
     
     
                ///on lit le port dans un thread pour un retour éventuel.
                Thread t = new Thread(new ThreadStart(Com_Read));
                t.Start();
     
            }
    Car il peut y avoir plusieurs erreurs par la suite du genre, paiement non effectué.

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Soit tu utilises des exceptions dans le cas où tu ne peux pas prévoir les cas d'erreur, soit au lieu de renvoyer un booléen, tu renvoies une variable d'un autre type (une enum par exemple)
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

Discussions similaires

  1. Creer un evenement dans une Dll
    Par cpofm dans le forum Langage
    Réponses: 1
    Dernier message: 05/09/2008, 15h34
  2. Creer un evenement
    Par chris81 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 13/01/2007, 01h12
  3. Creer un evenement pour un objet
    Par toure32 dans le forum Delphi
    Réponses: 11
    Dernier message: 17/11/2006, 19h36
  4. Réponses: 2
    Dernier message: 09/11/2006, 14h46
  5. [VB.NET] Creer des evenement checkbox dynamiquement
    Par maxxou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/08/2006, 17h51

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