我有一个Delegate命令,如下所示:
public static DelegateCommand CreateCommand<TState, TTrigger>(this StateMachine<TState, TTrigger> stateMachine, TTrigger trigger, Action execute = null, Func<bool> canExecute = null)
{
if (canExecute == null)
{
canExecute = () => true;
}
if (execute == null)
{
execute = () => { };
}
return new DelegateCommand(
executeMethod: async () =>
{
await Task.Run(() =>
{
execute();
});
if (stateMachine.CanFire(trigger))
{
stateMachine.Fire(trigger);
}
},
canExecuteMethod: () => canExecute());
}
下面的代码片段不应该被执行,直到“execute()”方法完成。
if (stateMachine.CanFire(trigger))
{
stateMachine.Fire(trigger);
}
目前我的应用程序以异步方式工作,所以在execute()完成之前它会转到下一行。我试过了
等待,但它没有等待。我在这里缺少什么?
答案 0 :(得分:0)
您可以使用ContinueWith方法。
await Task.Run(() =>
{
execute();
}).ContinueWith(
x =>
{
stateMachine.Fire(trigger);
});