【发布时间】:2015-08-03 21:56:15
【问题描述】:
我想包装一个外部资源并将其转换为我的应用程序中的流(然后由 webapi 控制器中的PushStreamContent 使用)。
C# 中的 Streams 文档并没有真正推断我如何创建使用异步方法的流。
例如,尝试从System.IO.Stream 继承提供了一个非常同步的“读取”方法。理想情况下,我希望我的阅读成为一项“可以等待”的任务。甚至 readAsync 方法看起来也希望读取是同步的,它们只是选择块。
我非常想要 C 语言中的 select 之类的东西,我可以在其中将 IO 设置为准备好读取,然后 readAsync 的内容将继续读取。可能会有数据在外部挂起的点,所以我希望读取调用推迟到其他任务并在准备好时继续读取。
public override int Read(byte[] buffer, int offset, int count)
{
throw new NotImplementedException();
}
我应该明确覆盖ReadAsync 来完成此操作吗?是否有任何关于如何在 .NET 中实现自己的流的文档
【问题讨论】:
-
你能澄清一下“
ReadAsync...期望读取是同步的”是什么意思吗? -
我不明白你为什么不能直接覆盖
ReadAsync和Read。
标签: c# .net asynchronous stream