【发布时间】:2012-10-20 23:19:20
【问题描述】:
我正在尝试将以下类转换为延迟返回文件。
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).
我似乎没有掌握如何 打包和解包任务
欢迎提供帮助。
谢谢
【问题讨论】:
-
恕我直言,
IEnumerable可能更适合这种情况。
标签: c# iterator system.reactive async-await c#-5.0