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

问题描述:

我有这样的代码:如何在F#中编写这个异步IO C#代码?

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);   

找遍周围但这里有几个概念,我不能把它们放在一起。

可以使用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#很大的不同。