2012-05-09 5 views
1

説明: HttpWebRequestを使用して、IsolatedStorageに複数のイメージを連続してダウンロードして保存しています。 すべての画像のダウンロードが完了したら、ユーザーを別のページに移動する必要があります。別のページには、隔離されたストレージの画像コントロールに画像が表示されます。WP7 HttpWebRequest複数のリクエストが完了したときを知る方法?

質問: ナビゲーションを実行するためにすべてのダウンロードが完了したら、どうすればわかりますか?

画像を保存した後、最後のforeachループの繰り返しで要求コールバック関数(requestImage_BeginGetResponse())にリダイレクトしようとしましたが、画像のサイズが異なります。すべてのダウンロードが完了する前にリダイレクトします。

コード:あなたは、downloaded.Whenever画像がダウンロードされるだろう、あなたの画像を記録するためにint型の変数を用意し、その値が0である刚性変数マイナス1を作成し、通知しなければならない

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); 
     })); 
    } 
} 

答えて

1

操作をナビゲートします。

+1

同時アクセスに関する問題を防ぐには、Interlocked.Decrement(http://msdn.microsoft.com/en-us/library/1z4b2e5y%28v=vs.95%29.aspx)を使用する必要があります。 'if(Interlocked.Decrement(ref counter)== 0)Notify();' –

関連する問題