作为参数的功能(无返回结果类型)

时间:2016-12-01 15:17:13

标签: c# wpf .net-4.0

我试图将方法作为参数传递。该方法不返回任何内容(void),因此我以Action的形式执行此操作。从命令调用Execute时发生错误。这是错误:

  

无法转换为' void'到' System.Action'。

任何帮助?

private async void Execute(Action runAction)
{
    ...

    await TaskEx.Run(() => runAction);

    ...

}

_command1 = new RelayCommand(Execute(Class.ExecuteVoidMethod1()), () => CanExecuteVoidMethod1());

修改

_command1 = new RelayCommand(Execute(() => Class.ExecuteVoidMethod1()), () => CanExecuteVoidMethod1()); // Same Error

_command1 = new RelayCommand(Execute(() => Class.ExecuteVoidMethod1), () => CanExecuteVoidMethod1()); // Only assignment, call, increment, decrement, await expresion and new object expressions can be used as a statement

1 个答案:

答案 0 :(得分:0)

为什么不用Execute方法调用您的操作?

await TaskEx.Run(() => runAction);

你必须这样运行:

await TaskEx.Run(() => runAction());

在其他情况下,您将返回操作而不是运行它。