c# - 下载所有数据后是否引发 WebClient.OpenReadCompleted 事件?

标签 c# windows-phone-7 webclient

我正在使用 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/

相关文章:

c# - Application.Restart 不传回参数

c# - 如何防止我的应用创建新实例

c# - Visual Studio 2013中的C#方法重载解决问题

c# - 如何关闭用户控件的初始化

image - 如何更改 View 中图像的前景色

.net - 如何以编程方式删除 WebClient 中的 2 个连接限制

c# - 使用 WebClient 在 Unity3d 中下载大文件

c# - 使用 C# API 从 Facebook 下载附件

c# - 如何从 ASP.NET MVC 3 设置 HTTP 状态代码?

c# - 奇怪的 HttpWebResponse 错误 : ServerProtocolViolation