gpt4 book ai didi

asynchronous - 在异步上下文中读取文件?

转载 作者:行者123 更新时间:2023-12-04 05:14:39 24 4
gpt4 key购买 nike

我要杠杆async使我的代码在 F# 中更具可读性和性能。

我可以使用这样的函数读取整个文件:

let readFile path = async {
return System.IO.File.ReadAllText path
}

然后像这样使用这个函数:
"README.md" |> readFile |> Async.RunSynchronously |> Console.WriteLine

但是,.NET ReadAllText方法是阻塞。

这是使用 async 读取文件的合适方法吗? ?

最佳答案

您可以使用 StreamReader公开 ReadToEnd 的异步版本的类.

let readFile (path:string) = async {
use sr = new StreamReader(path)
return! sr.ReadToEndAsync() |> Async.AwaitTask
}

在实践中,运行一些测量以确保您实际上从在这种情况下使用 async 获得一些好处可能是一个好主意 - 除非您对许多文件做一些有趣的事情,否则它可能无关紧要。

奖金:

let writeFile (path : string) (content : string) = async {
use sw = new System.IO.StreamWriter(path)
return!
sw.WriteAsync(content)
|> Async.AwaitTask
}

关于asynchronous - 在异步上下文中读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com