表达式应该是MethodCallExpression错误,调用Expression <action> </action>

时间:2014-10-22 05:16:41

标签: c# async-await

以下代码抛出此异常的原因是什么?&#34; Expression必须是MethodCallExpression。我认为召唤行动就是......

     Action startBouncePolling = new Action(async () =>
    {

    });

    BackgroundJob.Enqueue(() => startBouncePolling());

Enqueue的签名是Expression<Action>

的一个参数

1 个答案:

答案 0 :(得分:6)

当您致电startBouncePolling()时,您不会调用方法。 startBouncePolling不是方法,而是委托。所以你实际上是调用委托

因此,lambda表达式() => startBouncePolling()的正文最终是InvocationExpression,而不是MethodCallExpression

如果您使用方法而不是委托,例如:

public async Task StartBouncePolling()
{
}
...
BackgroundJob.Enqueue(() => StartBouncePolling());

然后身体将是MethodCallExpression