Comment limiter l'utilisation du PROCESSEUR dans une boucle while

Comment limiter le CPU d'une boucle while?

Dans ce cas, le code qui est à l'intérieur de la boucle while:

Private Sub wait(ByVal time)
        Dim sw As New Stopwatch
        sw.Start()
        Do While sw.ElapsedMilliseconds < time And StillOpen = True
            Application.DoEvents()
        Loop
        sw.Stop()
    End Sub

Mais maintenant, ici, est le problème. Cette boucle permet à la boucle while pour exécuter chaque seconde, une fois par seconde, et la wait sous-marin est à l'origine de ce retard, comme il se doit.

Comment puis-je limiter le CPU que c'est? Pour une raison quelconque, mon gestionnaire de tâches, dit-il en prenant 50 Processeurs pour exécuter cette tâche simple, mais il devrait probablement pas prendre plus de 1 ou 2. Bien que le manager dit qu'il prend beaucoup de CPU, ma vitesse de l'ordinateur n'est pas affectée, ce qui est étrange, compte-tenu qu'il est un deux-année-vieux portable.

Je ne veux pas à tous les utilisateurs de paniquer à ce sujet, mais de savoir comment les gens ces jours-ci....

De toute façon, la langue est vb.net. Quelqu'un peut-il m'aider?

Merci!

EDIT: Pour préciser, que le code n'est pas à l'intérieur de la boucle while lui-même, mais un appel à la sous-routine est, c'est à dire wait(1000)

  • Refactoriser. Sérieusement, il y a bien mieux construit là-bas: waithandles, rappels, etc.
  • Donner un exemple de code s'il vous plaît?
  • Quel est le contexte de ce code est utilisé dans?
  • alors que i < 100000000000 attendre(1000) Run() Fin tant que
  • Et d'insérer des retours à la ligne (où ils doivent aller 😉
  • "alors que i < 100000..." bloc est un très inhabituel, non-idiomatiques construire. Pourquoi tu fais ça? Ce comportement que vous souhaitez atteindre? Sachant que, il y a probablement une meilleure conception globale, nous pouvons vous suggérer.
  • Je suis en train de boucler indéfiniment, tout simplement. Que suggéreriez-vous-je faire? Je comprends que c'est un idiot façon de le gérer, mais il fonctionne plutôt bien.
  • Est-ce un riche d'application avec une interface graphique? La norme technique est d'utiliser Windows boucle d'événements, et de répondre à des événements que l'utilisateur génère. En fait j'ai été à la recherche pour plus de détails sur ce que votre application ne ("mise à jour de sprites ennemis à chaque seconde; répondre immédiatement si l'utilisateur appuie sur une touche") que la comment il le fait ("boucle pour toujours"). Presque chaque programme interactif là boucles pour toujours.
  • J'ai à peine l'appeler riche lol. En effet, son principe est basé sur le fait qu'il n'existe AUCUNE interaction de l'utilisateur avec le premier événement, à tous. L'utilisateur peut contrôler la façon dont elle apparaît à eux, mais ils ne peuvent pas contrôler. C'est basé sur le populaire jeu par navigateur "IdleRPG", à l'exception, sans la partie rpg un peu.

InformationsquelleAutor Cyclone | 2009-09-02