Comment ajouter un délai entre chaque itération de la boucle for en C#?
Je suis en train de travailler sur ASP.NET MVC3 avec C#.
Je tiens à ajouter un délai entre chaque itération de la boucle for.
for(int i=0; i<5; i++)
{
//some code
//add delay here
}
Alors, Comment puis-je faire cela?
- Hey , j'ai besoin de le faire aussi. Comment avez-u faire sans sommeil
Vous devez vous connecter pour publier un commentaire.
Comme d'autres réponses ont dit, à l'aide de
Thread.Le sommeil
va faire un fil de sommeil... mais étant donné que vous êtes en train de rédiger une application web, je ne pense pas qu'il va faire ce que vous voulez.Si le but est de utilisateurs à voir les choses d'une seconde à la fois, vous aurez besoin de placer le retard sur le côté client. Si vous avez cinq secondes de retard avant de vous envoyer une réponse HTTP, cela veut simplement dire que l'utilisateur devra attendre cinq secondes avant de voir votre page de résultat.
Il semble que vous devriez faire avec AJAX.
EDIT: Comme indiqué dans les commentaires, c'est probablement la peine de vous en regardant les
window.setTimeout
appel Javascript. (Je n'ai pas "faire" Javascript, donc j'ai peur de ne pas être en mesure de vous aider avec tous les détails autour de cela.)setTimeout()
en Javascript pour lui donner quelque chose à rechercher.La façon la plus simple est de mettre le thread en cours du sommeil.
N'oubliez pas, cependant, que les threads dans une application web sont très précieuses ressources, et endormir garde toujours le fil occupé.
Il n'y a généralement pas de bonne raison pour ce faire, dans une application web.
Quel que soit le problème a besoin de vous pour ce faire, ne peut être résolu dans une meilleure façon.
Une autre approche, puis celles déjà décrites peuvent être Réactif Extensions (Rx). Il y a quelques méthodes qui génèrent des séquences de valeurs dans le temps. Dans votre cas, vous pouvez utiliser le code suivant.
La
ToTask
appel permet d'attendre leIObservable
pour terminer. Si vous n'en avez pas besoin, vous pouvez simplement le laisser dehors.Observables.Générer
génère une séquence de valeurs à des horodateurs.vous pouvez utiliser
Thread.Sleep();
cela arrête l'exécution du thread en cours de 5 secondes.
Comment au sujet de quelque chose comme
Fil de discussion.Méthode Sleep (Int32)
Vous pouvez utiliser quelque chose comme un retard d'une seconde:
mais assurez-vous que c'est uniquement à des fins de débogage. Il y a peu de plus ennuyeux que d'délibérément ralentir logiciel.
Autre qu'un moyen facile d'introduire des améliorations de performances, plus tard, bien sûr 🙂