2011-08-31 63 views
1

我正在編寫一個C#.NET 3.0異步調用WCF服務。我得到以下錯誤。在C#3.0中的操作

錯誤1使用泛型類型'System.Action'需要'1'類型 參數。

但是,當在.NET 3.5中這樣做時,不會發生錯誤。 .NET 3.0不支持這個,或者我做錯了。我必須使用.NET 3.0,因爲iam正在爲XPe編寫應用程序。

這就是我的代碼的樣子。

AsyncCallback aSyncCallBack = 
delegate(IAsyncResult result) 
{ 
    try 
    { 
     service.EndSubscribe(result); 

     this.Dispatcher.BeginInvoke((Action)delegate 
     { DGStudent.ItemsSource = test; }); 
    } 
    catch (Exception ex) 
    { 
     this.Dispatcher.BeginInvoke((Action)delegate 
     { MessageBox.Show(ex.Message); }); 
    } 
}; 
+2

如果你拿走'(Action)',它會起作用嗎?因爲投射可能是無用的......而且爲了您的信息,您可以在XPe上使用.NET 4.0:http://stackoverflow.com/questions/4374357/can-i-install-net-framework-4-on -windows-xp-embedded – xanatos

+0

你確定.net 4.0正在爲嵌入式XP工作。因爲我已經嘗試在XP嵌入式上安裝.net 3.5並且它不支持它。但我會研究更多。謝謝你的提示。 – Tan

+0

還是您的意思是Windows Embedded Standard 2009? – Tan

回答

3

非通用System.Action是在.NET 3.5中引入的,無法從.NET 3.0中使用。編譯器認爲你的意思是通用的System.Action<T>,它需要一個類型參數。

+0

是的,點擊第一個鏈接並記下側欄。 –

+0

點擊鏈接並選中「其他版本」 –

2

所有Action代表除了Action<T>只加入在.NET 3.5;它們在3.0中不可用。如果你看看文檔,Action documentation只有3.5和4.0的版本,而Action<T> documentation可以回到2.0。

您必須創建您自己的無參數代表版本,或者在winforms中使用類似MethodInvoker之類的東西。