Ich versuche eine Methode als Parameter zu übergeben. Die Methode gibt nichts zurück (void), also mache ich es in Form von Action
. Der Fehler tritt auf, wenn ich Execute
von den Befehlen aufrufe. Dies ist der Fehler:Funktion als Parameter (Ohne Rückgabetyp)
Can not be converted from '
void
' to 'System.Action
'.
Irgendwelche Hilfe?
private async void Execute(Action runAction)
{
...
await TaskEx.Run(() => runAction);
...
}
_command1 = new RelayCommand(Execute(Class.ExecuteVoidMethod1()),() => CanExecuteVoidMethod1());
EDIT
_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
@ThePerplexedOne Hallo und danke, aber Func wird verwendet, wenn Sie einen Rückgabewert benötigen? Es ist nicht so? – avechuche
Mögliches Duplikat von [Argumenttyp 'void' kann nicht dem Parametertyp 'System.Action' zugewiesen werden] (http://stackoverflow.com/questions/3387812/argument-type-void-is-not-assignable-to-parameter -type-system-action) –
Sie müssen 'TaskEx.Run (() => runAction())' oder nur 'TaskEx.Run (runAction)' verwenden. Im Moment passierst du einen 'Func'. –
Lee