[英]Passing an async Task as Action to method?
提示:本站为国内最大中英文翻译问答网站,提供中英文对照查看,鼠标放在中文字句上可显示英文原文。
我有一个方法使用了 100 多个地方,将 Action 作为参数。 我现在介绍了一种需要等待并且必须异步的新方法。 我有哪些选项可以将新的异步任务(以前无效)操作传递给该方法?
// What I need (want) to do
MethodToBeCalled(DoSomething);
// Methods
void MethodToBeCalled(Action action)
{
// Do Something
}
async Task DoSomething()
{
await MethodX();
return Task.CompletedTask;
}
尝试使用 Func 但没有找到让它工作的方法
你不能; 你会想要一个Func<Task>
而不是Action
,例如重载:
await MethodToBeCalledAsync(DoSomething);
async Task MethodToBeCalledAsync(Func<Task> action)
{
// ...
await action();
// ...
}
任何通过 .Wait( .Wait()
、 .GetAwaiter().GetResult()
等进行“异步同步”的尝试都是危险的,并且会破坏async Task
方法的全部意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.