繁体   English   中英

将异步任务作为操作传递给方法?

[英]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.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM