如何在F#中编写异步IO的C#代码?

3

I have this code:

public async Task CreateFileAsync(string filePath, byte[] bytes)
    {
        using (var sourceStream = System.IO.File.Open(filePath, FileMode.OpenOrCreate))
        {
            sourceStream.Seek(0, SeekOrigin.End);
            await sourceStream.WriteAsync(bytes, 0, bytes.Length).ConfigureAwait(false);
        }
    }

我想用F#编写它,但是在这之前我只能做到这一步,然后就不知道该怎么做了:

module myModule
open System.IO;
let CreateFileAsync (filePath: string, bytes : byte[]) =
    use sourceStream = File.Open(filePath, FileMode.OpenOrCreate)
        |> sourceStream.Seek(0, SeekOrigin.End);        

我在搜索周围的内容,但这里有一些概念,我无法将它们全部整合在一起。

1个回答

3
您可以使用async { .. }工作流程:
let createFileAsync (filePath, bytes) = async {
  use sourceStream = System.IO.File.Open(filePath, FileMode.OpenOrCreate)
  sourceStream.Seek(0, SeekOrigin.End)
  do! sourceStream.AsyncWrite(bytes, 0, bytes.Length) }

这是相当重要的代码,所以在F#中看起来并没有太大的区别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接