2010-10-13 47 views
0

我陷入InvalidCast异常。我正在调用一个委托来运行一些函数。在委托的回调方法中,我试图获取函数的返回值,如下所示。C#委托Invalidcast异常

 public delegate SyncHelper.SyncPlan RunJobDelegate(); 

    public static void SyncJobCallback(IAsyncResult result) 
    { 

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

当RunJobDelegate runSyncJob =(RunJobDelegate)result.AsyncState;被称为“我无法投射类型'RunJobDelegate'的对象来键入'RunJobDelegate'。”

如果有人看到过这个,请帮助我解决此问题。

Divya。

+0

你可以张贴了'BeginInvoke'代码吗? – Ani 2010-10-13 18:47:46

+0

你能展示更多的代码吗?具体来说,RunJobDelegate如何被初始化和启动? – JeffFerguson 2010-10-13 18:48:40

+0

可能的重复http://stackoverflow.com/questions/3895163/invalidcastexception-casting-object-to-its-own-type/3895578​​#3895578​​ – 2010-10-13 19:04:56

回答

2

这类事情应该只有当你的代码中定义了两个不同的RunJobDelegate类型时才会发生。确保它没有被定义两次。

如果这不是问题,请大部分代码(包括调用函数)供我们检查。

+0

是的,你说得对。我已经声明了相同类型的委托,但在另一个类中的不同名称空间中。我已经删除了,并使用已有的,我的问题得到解决。但是,你能告诉我为什么这是一个问题吗? – 2010-10-13 19:26:54

+0

非常感谢您的帮助:) – 2010-10-13 19:27:52

+0

System.Data.Whatever是与Your.Own.Namespace完全不同的类型。无论如何。拥有相同的“姓氏”并不会使它们成为同一类型。因此,如果您使用第一种类型并试图将其转换为第二种类型,那么将无法将一种转换为另一种。 – 2010-10-13 19:37:43