如何在匿名委托中调用异步方法

本文关键字:调用 异步方法 | 更新日期: 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(...);
    }
);