C#委托Invalidcast异常

时间:2010-10-13 18:44:27

标签: c# delegates

我遇到了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'。”

如果有人以前见过这个问题,请帮我解决。

迪夫亚。

2 个答案:

答案 0 :(得分:2)

如果你的代码中定义了两种不同的RunJobDelegate类型,那么这种事情应该只是偶然的。确保它没有定义两次。

如果这不是问题,请为我们检查更多代码(包括调用函数)。

答案 1 :(得分:0)

您是否在调试器中检查了result.AsyncState的类型?

您确定要使用AsyncState而不是AsyncDelegate吗?

参考:http://msdn.microsoft.com/en-us/library/system.iasyncresult.asyncstate.aspx