相关疑难解决方法(0)

C#5 ReadAsync和迭代器

我试图将下面的类转换为懒惰返回一个文件.

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在正试图将其转换为使用

StreamReader.ReadLineAsync() 
Run Code Online (Sandbox Code Playgroud)

甚至更好的是将数据分块,即

await SourceStream.ReadAsync(buffer, 0, chunkSize). 
Run Code Online (Sandbox Code Playgroud)

我似乎没有掌握如何包装和解包任务

欢迎提供援助.

谢谢

c# iterator system.reactive async-await c#-5.0

4
推荐指数
1
解决办法
2020
查看次数

标签 统计

async-await ×1

c# ×1

c#-5.0 ×1

iterator ×1

system.reactive ×1