[C++/CLI] problème avec Timer ou delegate
Bonjour tout le monde,
Voila je voudrais utilisé un Timer dans du managé, afin de check de manière périodique le contenu d'un tableau qui est rempli dans du c++ natif.
La déclaration de mon pointeur se passe sans accroc, le problème est lorsque je donne à mon timer la fonction qu'il doit apelé lorsqu'il arrive à 0. Une première erreur était de ne pas donné l'adresse de cette fonction mais de la passé directement en paramètre (vs 2005 à crier, et ma donné la correction). Et là maintenant, j'ai une erreur assez surprenante..
Citation:
Error 1 error C3352: 'void CliWrapper::CliWrapperEigenvalues::t_Elapsed(System::Object ^,System::Timers::ElapsedEventArgs ^)' : the specified function does not match the delegate type 'void (System::Object ^,System::Timers::ElapsedEventArgs ^)' c:\users\paqueth\HerculeNew\Hercule.Presentation.UI.sln\Hercule.Business.Wrapper\CliWrapperEigenvalues.cpp 41
Donc les deux signatures de méthodes sont a priori les mêmes mais VS2005 ne le voit pas comme ca...
Déclaration et initialisation de mon Timer
Code:
1 2 3 4 5
| System::Timers::Timer ^t = gcnew System::Timers::Timer();
t->Elapsed += gcnew Timers::ElapsedEventHandler(&CliWrapperEigenvalues::t_Elapsed);
t->Interval = 1000;
t->AutoReset = false;
t->Start(); |
Fonction qui doit être appelée
Code:
1 2 3 4
| System::Void CliWrapperEigenvalues::t_Elapsed(Object^ sender, Timers::ElapsedEventArgs^ e)
{
} |
Si quelqu'un pouvait trouver le problème ca me ferait grandement plaisir :oops: