2

我正在使用 WebClient.OpenReadAsync 方法从 Windows Phone 7 上的 Web 服务器下载数据。在某些时候,会引发 OpenReadCompleted 事件,并且我会获得一个可用于读取数据的流。

我可以假设发生这种情况时数据已经下载吗?即读取流结束将是一个本地操作,不会涉及任何更多的网络访问?还是读取流实际上会触发下载数据?

如果数据已经下载,存储在哪里?如果数据量很大并且无法容纳任何地方,而我只想阅读其中的一小部分怎么办?

我在文档中找不到有关它的任何信息。

4

1 回答 1

2

我可以假设发生这种情况时数据已经下载吗?

不,你不能这样假设。当打开包含资源的流的异步操作完成时引发此事件。一旦您开始读取流,该流将从网络套接字读取,从而导致网络 I/O 操作。

如果数据已经下载,存储在哪里?

在引发此事件的那一刻,任何地方都不会下载任何数据。因此,如果服务器返回的数据很大,则由您在内存中以块的形式读取它并将其写入其他一些 Stream(如文件或数据库或其他东西)。

于 2012-12-29T15:15:58.390 回答