使用 `async` 修饰符标记 F# 方法

Marking F# method with `async` modifier

我正在尝试在 F# 中实现一个方法,该方法将以 async .. await 方式从 C# 中使用。 这是存根:

[<Extension>]
static member DoWorkAsync(value : MyValueType): Task<MyOtherType> =
    task {
        // do something and return
    }

但是,当我从 C# 使用此方法时,我得到了

The 'await' expression can only be used in a method or lambda marked with the 'async' modifier

async 修饰符标记 F# 方法的方法是什么?

如果不看 C# 代码就很难判断,但听起来您正在做类似的事情:

public Task<MyOtherType> FooAsync(MyValueType v)
{
    var v = await DoWorkAsync(v);
    return new MyOtherType(v); 
}

而以下方法会起作用:


public async Task<MyOtherType> FooAsync(MyValueType v)
//     ^^^^^
{
    var v = await DoWorkAsync(v);
    return new MyOtherType(v); 
}