簡體   English   中英

如何在匿名委托中調用異步方法?

[英]How can I call an async method inside an anonymous delegate?

我有一個函數將委托作為輸入參數。

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(...);
    }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM