首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在异步上下文中读取文件?

在异步上下文中读取文件?
EN

Stack Overflow用户
提问于 2018-06-04 02:29:53
回答 1查看 346关注 0票数 4

我想利用async使我的代码在F#中更具可读性和性能。

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

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

然后像这样使用函数:

"README.md" |> readFile |> Async.RunSynchronously |> Console.WriteLine

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 06:11:59

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

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

在实践中,运行一些测量可能是一个好主意,以确保您在此场景中使用异步实际上获得了一些好处-除非您正在对许多文件执行一些有趣的操作,否则这可能并不重要。

奖励:

let writeFile (path : string) (content : string) = async {
  use sw = new System.IO.StreamWriter(path)
  return!
    sw.WriteAsync(content)
    |> Async.AwaitTask
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50669667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档