You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用WebClient通过MemoryStream保存为GIF图像且保留下载进度上报

问题原因

你当前使用的WebClient.DownloadData()是同步阻塞方法,会等到全部数据下载完成后才返回结果,执行过程中不会触发DownloadProgressChanged事件,因此无法上报下载进度。

解决方案

改用WebClient提供的异步字节下载方法DownloadDataTaskAsync(),该方法和你雷达图下载用的DownloadFileTaskAsync同属异步下载接口,会正常触发你已经绑定的所有DownloadProgressChanged事件,拿到下载完成的字节数组后再做GIF格式转存即可,完全满足你的需求。

修改后的卫星图像下载代码

else
{
    // 异步下载字节数据,全程触发进度上报事件
    byte[] imageBytes = await client.DownloadDataTaskAsync(new Uri(urls[i]));
    using (MemoryStream ms = new MemoryStream(imageBytes))
    {
        Image img = Image.FromStream(ms, true);
        img.Save(satelliteFolderImagesDownload + "\\image" + satCounter + ".gif", System.Drawing.Imaging.ImageFormat.Gif);
    }

    satCounter++;
}

修改后原有进度条、下载速度、完成状态的逻辑都不需要改动,即可同时实现进度上报和GIF格式转存的功能。

内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:27:03