C#回调无法正常工作

时间:2010-09-24 11:27:24

标签: c# .net

我正在定义一个函数,它将另一个函数作为参数(使用Microsoft(R)Visual C#2005编译器版本8.00.50727.4927)但我得到一个奇怪的错误。

这是功能定义:

public ManagementScope ConnectComputerWMI(string computerName, 
    string username, string password, 
    Action callbackProcessEnd) {... }

这是错误:

error CS0305: Using the generic type 'System.Action<T>' requires '1' type arguments

我不确定System.Action需要什么类型。

1 个答案:

答案 0 :(得分:6)

错误消息使它看起来不知道非通用Action委托,我能想到的唯一原因是你的目标是.NET 2.0。在.NET 2.0中,只存在Action<T>;在.NET 3.5中引入了更多版本,在.NET 4中引入了更多版本。

编辑:我刚刚看到你正在使用Visual Studio 2005 - 这意味着你 以.NET 2.0为目标。 (你有一个指定.NET 4的问题的先前版本吗?我可以发誓你做了...)

这就是问题......现在有各种解决方案。您可以声明您自己的委托:

public delegate void Action();

或者你可以使用MethodInvoker或(它具有相同的签名,但不幸的是在Windows窗体命名空间中 - 如果你不使用Windows窗体则不理想)...

或者您可以升级到更现代版的Visual Studio和.NET。