调用 Polly ExecuteAsync 方法的正确方法是什么?

San*_*ndy 3 c# task-parallel-library polly

执行策略时,我看到有些人这样调用 ExecuteAsync:

...
.ExecuteAsync(async (ct) => await GetEmployeeAsync(employeeId, ct), cancellationToken);
Run Code Online (Sandbox Code Playgroud)

像这样:

...
.ExecuteAsync(ct => GetEmployeeAsync(employeeId, ct), cancellationToken);
Run Code Online (Sandbox Code Playgroud)

有什么区别以及应该使用哪一种?

Ste*_*ary 6

在这个简单的例子中,不存在语义差异。版本省略asyncawait具有几乎不可估量的性能优势。

在一般情况下,省略或遗漏 和 时asyncawait出现一些陷阱。作为一般规则,如果代码做了任何不平凡的事情,那么您应该保留asyncawait

仅当代码确实很琐碎时才删除(保留)async/ await- 就像在本例中,当委托仅绑定employeeIdGetEmployeeAsync.