2010-12-01 4 views
-1

Nous sommes confrontés à un problème avec les programmes d'écoute VB.NET qui utilisent un haut niveau d'UC (50% à 70%) sur le serveur sur lequel il est exécuté. Les auditeurs utilisent un concept de threading et nous avons également utilisé la classe FileSystemWatcher pour continuer à surveiller le changement de nom du fichier en pointant vers un emplacement commun. Les deux sont des applications de console et des tâches planifiées exécutées toute la journée. Pouvez-vous m'aider s'il vous plaît comment contrôler l'utilisation du processeur avec cette classe FileSystemWatcher?Utilisation élevée de l'UC - VB.NET

+1

Avez-vous exécuté un profileur pour savoir où va l'heure? –

Répondre

1

Tout dépend du code que vous utilisez. Par exemple, si vous avez une minuterie avec un intervalle de 10 ms mais que vous travaillez seulement toutes les 2 minutes et que vous faites beaucoup de vérifications à chaque minuterie, cela prendra beaucoup de CPU pour ne rien faire.

Si vous utilisez plusieurs threads et que l'un d'eux est en boucle en attendant que le second libère un verrou (Monitor.TryEnter()), cela peut entraîner une charge supplémentaire de processeur. Vous pouvez éviter cela en plaçant le thread en attente dans Monitor.Wait() et lorsque le thread occupé est terminé, faites Monitor.Pulse(). Mis à part les conseils très généraux ci-dessus, si vous postez les parties clés de votre code ou de vos résultats de profil, nous pourrons peut-être vous aider davantage. Si vous cherchez un profileur, nous utilisons RedGates ANTS Profiler (coûts mais avec un essai gratuit) et il donne de bons résultats, je n'ai utilisé aucun autre pour comparer (et je ne suis en aucun cas affilié à RedGate) alors d'autres peuvent être meilleurs.

Espérons que cela vous aidera.

Questions connexes