在服务中删除和创建性能计数器时,它可能会挂起该服务
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,而不需要构造函数
【讨论】:
将您的评论标记为已接受的答案,这样我们就知道不要来试图回答它。以上是关于在服务中删除和创建性能计数器时,它可能会挂起该服务的主要内容,如果未能解决你的问题,请参考以下文章