以下のクラスを遅延してファイルを返すように変換しようとしています。
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).
タスクのラップとアンラップの方法を把握していないようです
支援を歓迎します。
ありがとう