说明 我有多个连续的图像下载并使用HttpWebRequest保存在IsolatedStorage中。 完成所有图像下载后,我需要将用户导航到另一个页面,其中图像显示在来自隔离存储的图像控件中。
问题: 我如何知道何时完成所有下载以运行导航?
我尝试在保存图像后,在最后一个foreach循环迭代中将重定向传递给请求回调函数(requestImage_BeginGetResponse()), 但是图像的大小不同,有时最后一个图像的下载速度比以前快,导致在完成所有下载之前重定向。
代码:
private HttpWebRequest request;
private void downloadDataFile()
{
...
foreach (Gallery image in gallery)
{
request = (HttpWebRequest)WebRequest.Create(image.url);
request.BeginGetResponse(new AsyncCallback(requestImage_BeginGetResponse), new object[] { request, image.name });
}
}, request);
}
private void requestImage_BeginGetResponse(IAsyncResult r)
{
object[] param = (object[])r.AsyncState;
HttpWebRequest httpRequest = (HttpWebRequest)param[0];
string filename = (string)param[1];
HttpWebResponse httpResoponse = (HttpWebResponse)httpRequest.EndGetResponse(r);
System.Net.HttpStatusCode status = httpResoponse.StatusCode;
if (status == System.Net.HttpStatusCode.OK)
{
Stream str = httpResoponse.GetResponseStream();
Deployment.Current.Dispatcher.BeginInvoke(new Action(() =>
{
saveImage(str, filename);
}));
}
}
答案 0 :(得分:1)
您应该准备一个int类型变量来记录您要下载的图像。无论何时下载图像,使变量减1,直到其值为0,并通知导航操作。