簡體   English   中英

性能計數器注冊表驗證

[英]Performance Counters Registry validation

我有一個C#應用程序,它在啟動時會添加一些性能計數器。 但是,如果注冊表HKEY_LOCAL_MACHINE-> SOFTWARE-> Microsoft-> Windows NT-> CurrentVersion-> Perflib已損壞(丟失或無效數據),則檢查性能計數器是否存在的操作(PerformanceCounterCategory.Exists(category)確實需要長時間(大約30秒)之后才引發異常(InvalidOperation:類別不存在)。

我的問題是,在嘗試添加性能計數器之前,我如何才能驗證注冊表的有效性(以及有效性的含義),或者是否有一種方法可以使性能計數器操作超時,從而無需花費30秒鍾即可獲得一個例外。

我懷疑“有效性”是您不了解的內部實現細節。 但是,您至少可以嘗試打開相同的注冊表項,然后看看它們是否存在。 您可以使用Process Explorer找出正在讀取的鍵。

但是,我質疑您為什么還要關心。 損壞的注冊表不應該是很常見的事情,如果是的話,您將如何處理? 你所能做的就是戒煙。 因此,您最好只捕獲異常。 我會像對待其他任何阻塞操作一樣對待它,並在輔助線程(而不是UI線程)上執行此操作,並向用戶顯示進度,以便他們知道您的應用未掛起。

您確定注冊表已損壞?

我發現我的程序沒有在運行時創建性能計數器的權限。 相反,我將計數器的創建添加到了我的安裝程序中,並且該安裝程序必須以管理員身份運行。 在運行時,我的程序可以訪問或更新已創建的計數器。

我不知道如何按照要求回答您的問題,但是如果我理解正確,那么問題在於,它看起來像是應用程序在啟動時掛起了30秒。

如果是這樣,我建議您可以通過創建一個工作線程,告訴它創建性能監視器,然后繼續啟動應用程序來避免這種情況。
我沒有使用性能計數器,所以我不能說是否有什么可以阻止其工作?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM