在服务中删除和创建性能计数器时,它可以挂起服务

时间:2009-06-25 09:20:43

标签: c# .net performancecounter

在我编写的应用程序中,我们删除并在应用程序旋转时重新创建性能计数器。

从控制台运行时,应用程序会删除并重新创建计数器和计数器类别。

当我们从服务运行时,应用会按预期删除计数器类别,但在创建新类别时,它会挂起,直到服务超时

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

工作正常,但随后挂起此方法

      private PerformanceCounterCategory RecreateTheCategory()
  {
     PerformanceCounterCategory category = null;
     if (!PerformanceCounterCategory.Exists(CATEGORY_NAME))
     {
        category = PerformanceCounterCategory.Create(CATEGORY_NAME, CATEGORY_HELP,
                                                     PerformanceCounterCategoryType.SingleInstance,
                                                     counterCreationDataCollection);
     }
     return category;
  }
<。>在.Exists行上。我希望这与权限有关,但在生产中我们必须以本地系统运行服务我真的需要在代码中修复它而不提升用户帐户

由于

1 个答案:

答案 0 :(得分:2)

我找到了解决方案,我需要在OnStart()方法中构建我的IOC并且没有构造函数