2011-11-17 70 views
0

在windows phone 7上使用BackgroundTransferService时,有没有办法控制TransferProgressChanged被调用的频率?我猜测它与用于下载的内部缓冲区的大小有关,但我没有看到用于设置它的任何属性。BackgroundTransferService - TransferProgressChanged什么时候被调用?

BytesReceived值不是等间隔的,或者对于同一个文件的重复下载,它们甚至是相同的,但似乎是大约每个文件总大小的1%。

这对一个小文件是可以的,但是在下载大型(2GB电影)文件时会导致用户界面无响应。

+0

您可以显示您实际在做什么,因为BackgroundTranserService不应该影响用户界面。 –

+0

也许没有反应是错误的词。我只想要一个比每分钟更新更频繁的进度指示符,或者我目前正在进行更新? – Peregrine

回答

1

当下载的百分比发生变化时,BackgroundTransferService会更新(仅在整个数字上,如您所注意的)。这与市场下载等保持一致,其中进度有时需要很长时间才能更新(至少当我被迫使用我的边缘连接进行下载时)。

在你的情况下,如果文件很大,我会使用第二个动画,以便用户知道下载仍在进行中。我可能会在实际百分比进度显示上方添加一个“正在下载...”文本并为椭圆动画。

报告自己执行的下载过程相对容易,但BackgroundTransferService由操作系统控制,因此必须处理跨所有应用程序的资源分配。如果您正在使用它,那么大部分时间用户甚至不会看到进度显示,因为他们将会做其他事情。这意味着报告进度往往浪费资源。如果我要将2GB文件下载到手机中,我会每隔20-30分钟检查一次进度,并且在返回到我正在做的其他任何事情之前,我不会等待进度显示被更新。

+0

这是WP7.5看似半完成的又一例子。越来越多的人认为我应该停止Windows移动开发,直到可以使用统一的Windows 8平台。 – Peregrine

+0

用答复更新了我的答案。我不相信它已经完成了一半,而是很多开发人员(包括我自己)都有Windows开发中的习惯/技术,他们希望在WP7上继续使用它们。大多数时候这些都是不必要的。 – calum

相关问题