我试图将方法作为参数传递。该方法不返回任何内容(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
答案 0 :(得分:0)
为什么不用Execute
方法调用您的操作?
await TaskEx.Run(() => runAction);
你必须这样运行:
await TaskEx.Run(() => runAction());
在其他情况下,您将返回操作而不是运行它。