【发布时间】:2015-02-02 11:48:05
【问题描述】:
是否有一种简单的方法可以在下载仍在运行时处理加载的数据? 我不想等待下载完成以在处理之前将整个数据保存在内存或磁盘上。我想这样做是因为我的数据是压缩的,我想解压缩字节运行中的数据包并将它们直接写入磁盘。这样我就不会使用超过一个下载包的内存。
我试图与 WebClient 类相处,但我没有找到如何在 DownloadProgressChanged 事件中访问最后加载的字节。
类似这样的:
WebClient wc = new WebClient();
Uri uri = new Uri(myURL);
wc.DownloadProgressChanged += wc_DownloadProgressChanged;
wc.DownloadDataAsync(uri);
...
void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
ProcessData(e.Bytes,e.BytesReceived); //e.Bytes should access the downloaded byte packet
//but it doesn't exist
}
我已经使用 libcurl 解决了这个问题,但我想知道是否可以不使用外部库。
【问题讨论】:
-
您可以随时使用 HTTP 请求甚至 TCP 连接来获得更好的控制,.NET 有两个选项的类。
-
谢谢,我去看看。
标签: c# .net download webclient asynchronous