Je voudrais ralentir une boucle de sorte qu'il bouge toutes les 5 secondes. P>
dans ActionScript , j'utiliserais une minuterie et un événement complet de la minuterie pour le faire. Comment irai-je à ce sujet en C #? P>
4 Réponses :
Vous pouvez ajouter cet appel à l'intérieur de votre boucle: ou préférable pour une meilleure lisibilité: p> Toutefois, si votre application a Une interface utilisateur que vous ne devez jamais dormir sur le fil de premier plan (le fil qui traite la boucle de message d'application). P> p>
Ce code attendra 5 secondes entre chaque itération, pas le feu chacun de 5 secondes. Si le code que vous effectuez dans votre boucle prend beaucoup de temps, comme une demande Web, le total sera supérieur à 5 secondes. La solution avec une minuterie d'Adopilot est plus précise de votre question, mais toute solution peut convenir à vos besoins.
Pour la lisibilité, la fonction de sommeil peut également prendre une tranche de temps comme argument. Système.threading.thread.sleep (tispan.fromseconds (5));
Vous pouvez essayer d'utiliser la minuterie,
_timer.Enabled = true;
Ne pas utiliser de boucle du tout. Configurez un objet CODE> TIMER CODE> et réagissez à son événement tiré. Faites attention, car ces événements tireront sur un thread différent (le fil de la minuterie de la threadpool). P>
Disons que vous avez un pour code> -Loop que vous souhaitez utiliser pour écrire dans une base de données chaque seconde. Je créerais ensuite une minuterie définie sur un intervalle de 1000 ms, puis utilisez la minuterie de la même manière que vous utiliseriez un
pendant code> -Loop si vous voulez qu'il agisse comme un
pour code> -loop. En créant l'entier avant la boucle et en l'ajoutant à l'intérieur.
public patial class Form1 : From
{
timer1.Start();
int i = 0;
int howeverLongYouWantTheLoopToLast = 10;
private void timer1_Tick(object sender, EventArgs e)
{
if (i < howeverLongYouWantTheLoopToLast)
{
writeQueryMethodThatIAssumeYouHave(APathMaybe, i); // <-- Just an example, write whatever you want to loop to do here.
i++;
}
else
{
timer1.Stop();
//Maybe add a little message here telling the user the write is done.
}
}
}