2010-10-13 6 views
0

Je suis bloqué avec une exception InvalidCast. J'appelle un délégué pour exécuter une fonction. Dans la méthode de rappel du délégué j'essaye d'obtenir la valeur de retour de la fonction comme montré ci-dessous.Délégation C# Invalidcast Exception

 public delegate SyncHelper.SyncPlan RunJobDelegate(); 

    public static void SyncJobCallback(IAsyncResult result) 
    { 

     RunJobDelegate runSyncJob = (RunJobDelegate)result.AsyncState; 
     SyncHelper.SyncPlan obj_Plan = runSyncJob.EndInvoke(result); 

Lorsque RunJobDelegate runSyncJob = (RunJobDelegate) result.AsyncState; est appelé je frappe une exception en disant "Impossible de lancer l'objet de type 'RunJobDelegate' pour taper" RunJobDelegate '. "

S'il vous plaît aidez-moi avec la solution si quelqu'un a déjà vu cela.

Divya.

+0

Pouvez-vous poster le code 'BeginInvoke' aussi? – Ani

+0

Pouvez-vous montrer plus de code? Plus précisément, comment RunJobDelegate est initialisé et démarré? – JeffFerguson

+0

Copie possible sur http://stackoverflow.com/questions/3895163/invalidcastexception-casting-object-to-its-own-type/3895578#3895578 ​​ –

Répondre

2

Ce type de chose ne devrait être disponible que si vous avez deux types de RunJobDelegate différents définis dans votre code. Assurez-vous qu'il n'est pas défini deux fois.

Si ce n'est pas le problème, s'il vous plaît plus du code (y compris la fonction d'appel) pour nous d'examiner.

+0

Oui, vous avez raison. J'ai déclaré le même type de délégué mais dans un espace de noms différent dans une classe différente. J'ai enlevé cela et utilisé celui déjà existant et mon problème a été résolu. Mais pouvez-vous s'il vous plaît dites-moi pourquoi c'est un problème? –

+0

Merci beaucoup de m'aider ici :) –

+0

System.Data.Whatever est un type totalement différent de Your.Own.Namespace.Whatever. Avoir le même "nom de famille" ne les rend pas du même type. Ainsi, si vous utilisiez le premier type et essayiez de le convertir au second type, il échouerait sans un moyen de convertir l'un à l'autre. –