C# : Blocage d'un appel de fonction jusqu'à ce que condition

Je suis en train d'élaborer un C#, Winforms application, une partie de l'application sera en téléchargeant des fichiers sur un serveur web à l'aide de AsyncUpload (à l'aide,en raison de la nécessité d'utiliser un porgress de rappel) , Dans le programme C#

j'ai eu une simple boucle for qui appelle La fonction de Téléchargement

 for(int i=0;i < 10 ; i++)
{
  Uploadfun();
}

Et pour le fun un peu de magie:

Uploadfun()
  { 
  //Logic comes here

   //webClient.UploadFileAsync runs a 2nd thread to perform upload .. 
   webClient.UploadFileAsync(uri, "PUT", fileNameOnHD);  

 }

Et une fonction de callback qui est appelée lorsque l'Async téléchargement est terminé

Upload_Completed_callback()
{
  //Callback event
}

Modifier

La logique de la séquence:

  1. Plaisir est appelée (à partir de la boucle)
  2. Amusant logique est exécuté et terminé..
  3. Remonte à boucle
  4. Callback sera appelé par la suite, quand UploadFileAsync (qui est en cours d'exécution un peu de logique dans un autre thread) sera la fin de la

Le problème est sur le 3ème point, lorsque l'exécution se déplace vers l'arrière de la boucle for, j'ai besoin de bloquer la boucle continue jusqu'à ce que la fonction de rappel appelée.

Avez-vous accès à fun mise en œuvre? Vous devriez probablement envisager de fournir une interface synchrone sur lequel l'API asynchrone est mis en œuvre.
La façon dont vous décrivez, votre code semble séquentielle et mono-thread, ce qui signifie que jusqu'à ce que le callback fonction est appelée la boucle ne pourra pas continuer. S'il vous plaît corrigez-moi si je me trompe en donnant des explications plus détaillées.
Vous faites cela en arrière. Vous devez utiliser la version synchrone de UploadFile au cœur de la logique et de l'utilisation d'une API asynchrone sur le dessus de celui-ci si vous en avez besoin.
je suis forcé d'utiliser la version Asynchrone, parce que cela me donne le "progrès", les rappels, ce qui est une exigence.
(F# asyncs FTW!)

OriginalL'auteur Madi D. | 2010-02-06