我正在使用 WebClient.OpenReadAsync 方法从 Windows Phone 7 上的 Web 服务器下载数据。在某个时刻,会引发 OpenReadCompleted 事件,并为我提供一个可用于读取数据的流。
发生这种情况时我可以假设数据已经下载了吗? IE。读取流结束将是本地操作并且不会涉及任何更多的网络访问?或者读取流实际上会触发下载数据吗?
如果数据已经下载,它存储在哪里?如果数据量很大并且放不下,而我只想读取其中的一小部分怎么办?
我在文档中找不到任何有关它的信息。
最佳答案
Can I assume that the data is already downloaded when this happens?
不,你不能这么认为。当打开包含资源的流的异步操作完成时引发此事件。一旦开始读取流,将从网络套接字读取该流,从而产生网络 I/O 操作。
If the data is already downloaded, where is it stored?
在引发此事件时,任何地方都不会下载任何数据。因此,如果服务器返回的数据很大,则需要您在内存中分块读取它并将其写入其他 Stream(例如文件或数据库或其他东西)。
关于c# - 下载所有数据后是否引发 WebClient.OpenReadCompleted 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14082995/