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

时间:2015-07-09 22:54:58

标签: c# asynchronous f# async-await

我有这段代码:

header('Location: ' . $urls[rand(0,count($urls) - 1)]);

我想在F#上写它,在我无法弄清楚该做什么之前,我得到了这个:

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

我已经四处寻找,但这里有几个概念,我不能把它们放在一起。

1 个答案:

答案 0 :(得分: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#中看起来并没有什么不同。