我是一名 C# 程序员,但我对 F# 中的异步工作流有疑问。假设我在 C# 类库中有以下类:
class File {
IAsyncResult BeginReadAll(string fileName, AsyncCallback callback, object state){}
string EndReadAll(IAsyncResult result){}
}
我的理解是,我可以在 F# 中创建一个名为 ReadAllAsync 的函数,我可以像这样调用它:
async { let! rsp = ReadAllAsync() }
并且它不会阻塞调用线程,而是将其释放到线程池中,然后在操作完成时返回另一个线程。我想我了解如何使用 Async.Primitive 在 F# 中对此进行编码,但我的问题是:我可以从 C# 代码中调用这个 ReadAllAsync 函数吗?如果是这样,我如何将 F# 代码打包到类库中以从 C# 访问?