如何在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#很大的不同。