我正在使用WebClient.OpenReadAsync方法从Windows Phone 7上的Web服务器下载数据。在某些时候,会引发OpenReadCompleted事件,并且我会获得一个可用于读取数据的流。
我可以假设在发生这种情况时已经下载了数据吗?即读取流到结束将是本地操作,不会涉及任何更多的网络访问?或者读取流实际上会触发下载数据?
如果数据已经下载,它存储在哪里?如果数据量大并且不适合任何地方怎么办?我只想阅读其中的一小部分?
我在文档中找不到任何有关它的信息。
答案 0 :(得分:2)
当发生这种情况时,我可以假设数据已经下载了吗?
不,你不能这么认为。当打开包含资源的流的异步操作完成时,将引发此事件。一旦开始读取流,将从网络套接字读取此流,从而导致网络I / O操作。
如果数据已经下载,它存储在哪里?
在此事件被提出时,没有任何数据被下载。因此,如果服务器返回的数据很大,则由您在内存块中读取它并将其写入其他一些Stream(如文件或数据库或其他内容)。