2010-03-26 2 views

Répondre

2

Pour le code natif à rappeler en code managé, vous avez besoin d'un délégué de rappel (tant que nous ne parlons pas d'interopérabilité COM). Et la raison la plus courante des erreurs est que le délégué de rappel est récupéré avant le dernier rappel. Peu importe dans quelle classe la cible de rappel est définie, il est essentiel de conserver le délégué en vie.

La possibilité de spécifier simplement le nom de la méthode et de laisser le compilateur C# créer un délégué temporaire pour vous rend cette erreur encore plus commune. C'est à dire. au lieu de

SetCallback(MyCallbackMethod); // No good since you can't keep reference to delegate 

faire ce

_callback = MyCallbackMethod; // Create delegate explicitly and store reference at class level 
SetCallback(_callback); 

Vous pouvez activer "managed debug assistants" pour vous aider à trouver ce type de bug.

Questions connexes