如何在匿名委托中调用异步方法
本文关键字:调用 异步方法 | 更新日期: 2023-09-27 18:20:57
我有一个函数,它将委托作为输入参数。
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(...);
});
我收到一个错误,说"await"运算符只能在异步匿名方法中使用?
函数MyAPI.handle()只需要一个非异步委托。我不能改变那种方法。我该如何解决我的问题?
谢谢。
您可以通过传递异步lambda表达式来调用异步方法:
MyAPI.handle(async () =>
{
// my implementation
await MyMethodAsync(...);
});
MyAPI.handle(async () =>
{
// my implementation
await MyMethodAsync(...);
});
另一个解决方案,适用于像我这样不喜欢Lambda外观的人。
MyAPI.handle(
async delegate() {
// my implementation
await MyMethodAsync(...);
}
);