c# - c#中的异步和yield关键字
问题描述
public static async ???? ReadFileLineByLineAsync(string file)
{
using(StreamReader s = new StreamReader(file))
{
while (!s.EndOfStream)
yield return await s.ReadLineAsync();
}
}
我想编写一个异步函数来逐行读取文件。这个函数的返回类型应该是什么。我将不胜感激有关此的任何建议。
解决方案
您可以尝试Reactive Linq Observable
改用:
public static IObservable<string> ReadFileLineByLineAsync(string file)
{
return Observable.Create<string>(
(obs, token) =>
Task.Factory.StartNew(
() =>
{
using (var s = new StreamReader(file))
{
while (!s.EndOfStream)
obs.OnNext(s.ReadLine());
}
obs.OnCompleted();
},
token));
}
推荐阅读
- c++ - void* 数组将元素转换为另一种类型
- javascript - 使用 S3 将 JSON 文件放入 AWS 存储桶
- python - Python 屏幕抓取 Forbes.com
- xamarin.forms - SQLiteAsyncConnection -> CreateTablesAsync
() 需要两个类型参数 - powershell - 在不先运行 VB 脚本的情况下运行 Powershell 脚本的问题
- python - 在 pandas 扩展/滚动功能中,如何使用数据框或系列的索引?
- javascript - textContent.Match 细节和格式
- docker - gevent fd 必须为非负数:-1
- powershell - powershell 比较两个文件并将它们的列与侧面指示符列为匹配/不匹配
- javascript - Angular:从ErrorHandler发出发布请求?