Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Homme Profil pro SIDAOUI Mejdi
    Expert sécurité informatique
    Inscrit en
    novembre 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Nom : Homme SIDAOUI Mejdi
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Expert sécurité informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2011
    Messages : 21
    Points : 3
    Points
    3

    Par défaut comment utiliser methodInvoker en c++ cli?

    Bonjour, j'ai ce code en c# qui est correcte

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    private void HandleFarmStateChanged(object sender, ValueChangedEventArgs<CFarm.FarmState> e)
            {
                if (control.InvokeRequired)
                {
                    control.Invoke(new MethodInvoker(delegate
                    {
                        HandleFarmStateChanged(sender, e);
                    }));
                    return;
                }
     
               //FarmStateStatusLabel.Text = e.NewValue.ToString();
                Console.WriteLine(e.NewValue.ToString());
                Console.WriteLine("       ");
            }
    mais je le veux en c++ cli et c'est ce que j'ai essayé

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void GetNotifications::HandleFarmStateChanged(Object ^sender, ValueChangedEventArgs<CFarm::FarmState> ^e)
    {
    	if (control->InvokeRequired)
                {
    				control->Invoke(
        gcnew System::Windows::Forms::MethodInvoker(
            this,
    		&GetNotifications::HandleFarmStateChanged
        )
    );
                    return;
                }
     
    	Console::WriteLine(e->NewValue.ToString());
    	Console::WriteLine("       ");
    }
    et pourtant j'ai toujour cette erreur
    "Error 1 error C3352: 'void GetNotifications::HandleFarmStateChanged(System::Object ^,BaseLibCS::ValueChangedEventArgs<T> ^)' : the specified function does not match the delegate type 'void (void)'"

    Merci d'avance
    Modifier

  2. #2
    Expert Confirmé
    Homme Profil pro Pierre
    Ingénieur développement logiciels
    Inscrit en
    juin 2007
    Messages
    1 778
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2007
    Messages : 1 778
    Points : 3 712
    Points
    3 712

    Par défaut

    C'est assez simple, void HandleFarmStateChanged(Object^,ValueChangedEventArgs<T>^) n'est pas une void f(void)Il "suffit" de creer une fonction sans arguments, qui fournit les arguments requis.

    Pour les détails, je ne connais ni C# ni C++/CLI

    ce que tu fais ressemble (d'après le message d'erreur) à:
    Code :
    1
    2
    3
    4
    5
    6
    void myListener(int, int);
    void registerListener( void *(void) );
    //...
    {
        registerListener(myListener);
    }
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • La plus sotte des questions est celle qu'on ne pose pas.

    Pour faire des graphes, essayez yEd.

  3. #3
    Expert Confirmé Sénior
    Homme Profil pro Paul Bacelar
    Développeur informatique
    Inscrit en
    février 2005
    Messages
    2 861
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul Bacelar
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : février 2005
    Messages : 2 861
    Points : 4 074
    Points
    4 074

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •