繁体   English   中英

WP7 HttpWebRequest如何知道多个请求何时完成?

[英]WP7 HttpWebRequest how to know when multiple requests are completed?

说明:我有连续的多个图像下载,并使用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);
        }));
    }
}

您应该准备一个int型变量来记录将要下载的图像。每当下载图像时,都使变量减1直到其值为0,然后通知导航操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM