2009-06-25 9 views
3

Dans une application que j'ai écrite, nous supprimons et recréons les compteurs de performance au fur et à mesure que l'application tourne.Lors de la suppression et de la création de compteurs de performance dans un service, le service peut être bloqué.

Lors de l'exécution à partir d'une console, l'application supprime et recrée les compteurs et la catégorie de compteur fine.

Lorsque nous courons d'un service, l'application supprime la catégorie de compteur comme prévu, mais lors de la création de la nouvelle catégorie, il est suspendu jusqu'à ce que le temps de service sur

 if (PerformanceCounterCategory.Exists(CATEGORY_NAME)) 
    { 
     PerformanceCounterCategory.Delete(CATEGORY_NAME); 
    } 

Works ok mais se bloque dans cette méthode

 private PerformanceCounterCategory RecreateTheCategory() 
    { 
    PerformanceCounterCategory category = null; 
    if (!PerformanceCounterCategory.Exists(CATEGORY_NAME)) 
    { 
     category = PerformanceCounterCategory.Create(CATEGORY_NAME, CATEGORY_HELP, 
                PerformanceCounterCategoryType.SingleInstance, 
                counterCreationDataCollection); 
    } 
    return category; 
    } 

sur la ligne .Exists. J'attendre à ce que quelque chose à faire avec des autorisations, mais comme dans la production que nous devons exécuter le service en tant que système local je vraiment besoin de le fixer dans le code sans élever le compte utilisateur

Merci

Répondre

2

J'ai trouvé la solution, je nécessaire de faire mon CIO construire dans la méthode OnStart() et non le constructeur

+0

Marquez votre commentaire comme la réponse acceptée alors nous savons ne pas venir chercher pour essayer d'y répondre. –

Questions connexes