我想包装一个外部资源,并将其转换为我的应用程序中的流(然后由webapi控制器中的PushStreamContent
消费)。
c#中的流文档并没有真正推断出如何使用异步方法创建流。
Eg试图从System.IO.Stream
继承一个非常同步的"读"方法。理想情况下,我希望我的阅读是一个"等待"的任务。即使是readAsync
方法看起来也像他们期望读取是同步的,他们只是选择块。
我非常想在C中选择一些东西,在那里我可以将IO设置为准备阅读,然后readAsync
的东西将继续阅读。外部可能存在数据挂起的点,因此我希望read调用推迟到其他任务,并在准备好时继续读取。
public override int Read(byte[] buffer, int offset, int count)
{
throw new NotImplementedException();
}
我应该显式重写ReadAsync
来完成这个吗?有没有关于如何在。net中实现自己的流的文档
可读Stream
的基础是同步Read
操作。Stream类在同步的Read
周围实现ReadAsync
,所以你不需要重写ReadAsync
。
如果默认实现是不够的(例如,有一些智能你想注入到异步代码或一些性能改进基于内部实现的资源你正在流式传输),那么你可以覆盖BeginRead
和EndRead
方法。