我有一个函数将一个委托作为输入参数。
public delegate bool Callback();
public static class MyAPI
{
public static handle(Callback callback) {
...
}
}
所以我用这样的匿名代表打电话给api
MyAPI.handle(delegate
{
// my implementation
});
我的问题是如何在匿名委托中调用异步方法?
MyAPI.handle(delegate
{
// my implementation
await MyMethodAsync(...);
});
我收到一条错误消息,表示等待'等待'运算符只能在异步匿名方法中使用'?
函数MyAPI.handle()只期望非异步委托。我无法改变这种方法。我该如何解决我的问题?
谢谢。
答案 0 :(得分:8)
您可以调用异步方法,传递异步lambda表达式:
MyAPI.handle(async () =>
{
// my implementation
await MyMethodAsync(...);
});
答案 1 :(得分:3)
MyAPI.handle(async () =>
{
// my implementation
await MyMethodAsync(...);
});
答案 2 :(得分:-1)
对于像我这样不太喜欢 lambda 外观的人的另一种解决方案。
MyAPI.handle(
async delegate() {
// my implementation
await MyMethodAsync(...);
}
);