【发布时间】:2018-10-16 15:14:32
【问题描述】:
我有一个带有如下签名的 c# 函数:
Foo(List<int> data, Action<string> endAction)
我无法更改 Foo(它是一个外部库)。
我是c#的新手,这几年主要是在做JS开发,不知道有没有类似JS-land中所谓的“promisify”的东西。也就是说,使调用'Foo'的函数异步并等待Foo调用endAction回调。
【问题讨论】:
-
无论你做什么
Foo都会同步运行。如果您不想阻止 UI,则可以使用Task.Run卸载工作。但这不会将方法更改为异步,它将保持同步。 -
@JSteward,这就是答案。我建议扩展一点并写一个实际的答案。
-
您应该在 C#、JS 或伪代码中提供您希望如何调用该方法的示例。
-
下面 Tom Deseyn 的答案是我最想要的。基本上 Foo 正在另一个线程中做一些工作,并在完成时调用“endAction”。我只想
await Foo()在调用 endAction 时返回。
标签: c# .net .net-core async-await