0

我再次遇到(请参阅旧问题)使用 WebClient 类下载文件的问题。如果我打开应用程序并直接进入一个页面并开始下载,效果很好。但是,如果我先点击一下然后尝试下载文件,WebClient 会下载前 1% 然后停止,从而触发下载完成事件而没有错误。我尝试只注册到 DownloadProgressChanged 事件,但 WebClient 在 1% 后仍然停止。而且它始终是 1%,而不是 2% 或 3%……应用程序“FliteLevelTV”的当前版本已经在商店中并执行下载,使用完全相同的代码,没有问题。

我目前正在使用 Xamarin Studio 4.0.8(build2) 和 Xamarin.iOS 版本:6.2.7.1(商业版)。

我首先认为我的 WebClient 可能在完成之前被垃圾收集,但如果是这种情况,它不会触发下载完成事件。无论如何,在我的应用程序中,整个下载系统是通过一个 Singleton 控制的,该 Singleton 具有文件下载器的单个实例作为类属性,它也具有 WebClient 的单个实例作为属性,并控制只下载一个文件一次使用队列。所以我不确定如何以不同的方式构建它以提高效率。

请帮忙,我真的需要推送一些更新,而这个问题正在解决整个问题。

4

1 回答 1

0

以防万一有人被这个问题绊倒。

我用 HttpWebRequest 实现了这个过程并发现了问题。与 WebClient 挂钩的事件之一是对触发 UI 更改的值对象进行更改,这当然不会起作用,因为 WebClient 在后台线程上。看起来在这种情况下,WebClient 只是简单地吞下异常,杀死下载线程并触发完成的事件而没有错误。

于 2013-06-20T15:52:39.467 回答