我正在尝试将以下类转换为懒惰地返回文件。
public class ObservableFile2 : IObservable<string>
{
private readonly IObservable<string> subject;
public ObservableFile2(string fileName)
{
subject = Observable.Using<string, StreamReader>
(
() => new StreamReader(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)),
streamReader => ObserveLines(streamReader)
);
}
private IObservable<string> ObserveLines(StreamReader streamReader)
{
return ReadLines(streamReader).ToObservable();
}
private IEnumerable<string> ReadLines(StreamReader streamReader)
{
while (!streamReader.EndOfStream)
{
yield return streamReader.ReadLine();
}
}
public IDisposable Subscribe(IObserver<string> observer)
{
return subject.Subscribe(observer);
}
}
我现在正在尝试将其转换为使用
StreamReader.ReadLineAsync()
甚至更好的是对数据进行分块,即
await SourceStream.ReadAsync(buffer, 0, chunkSize).
我似乎没有掌握如何包装和打开任务
欢迎提供协助。
谢谢