2010-10-13 78 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