【发布时间】:2012-05-19 22:49:51
【问题描述】:
我一直在想……
新的 Async 结构是否真的允许中间结果而不需要在消费者端编写新代码?
让我用一个例子来详细说明。
假设我们有一个方法可以将数据下载到字节数组或流中,以更好者为准。
是否有可能,awaits 所说的方法可以在下载完成之前使用内置的异步功能开始消耗字节数组或流?我可以做的是每次下载流的某个部分时引发事件,但这会再次增加混乱。
考虑到awaited 方法返回这样的结果,让我编写一个我(会)期望产生中间结果的代码示例(从我的脑海中,不会是正确的代码!)。
io.Stream data = await downloadData();
byte[4096] buffer = new byte[4096];
while (!data.EOF) {
(await?) data.Read(buffer, offset, 4096);
}
截至目前,Stream.Read 是不可等待的,但是我们有什么方法可以做到这一点吗?我希望能够通过转账await。我在监督什么吗?
【问题讨论】:
标签: c# asynchronous async-await .net-4.5 c#-5.0