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

Posted

技术标签:

【中文标题】在服务中删除和创建性能计数器时,它可能会挂起该服务【英文标题】:When deleting and creating performance counters in a service it can hang the service 【发布时间】:2009-06-25 09:20:43 【问题描述】:

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

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

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

     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】:

我找到了解决方案,我需要在 OnStart() 方法中构建 IOC,而不需要构造函数

【讨论】:

将您的评论标记为已接受的答案,这样我们就知道不要来试图回答它。

以上是关于在服务中删除和创建性能计数器时,它可能会挂起该服务的主要内容,如果未能解决你的问题,请参考以下文章

即使光标关闭,Psycopg 请求也会挂起

FTPSClient retrievefile() 挂起

为啥删除大型 NTFS 卷上的文件夹后文件操作会挂起

为啥打开 mkfifo 管道时我的程序会挂起?

JavaFX 中的多线程会挂起 UI

使用模拟时,互斥锁创建会挂起