質問: パフォーマンスカウンターレジストリの検証 パフォーマンスカウンターレジストリの検証 起動時にパフォーマンスカウンターを追加するc#アプリケーションがあります。 ただし、レジストリhkey_local_machine→ software→ microsoft→ windows nt→ currentversion→ perflibが破損している場合(欠落データまたは無効なデータ)、パフォーマンスカウンター(performancecountercategory.exists(category))の存在を確認する操作は本当にかかります最終的に例外をスローするまでの長い時間(約30秒)(invalidoperation:categoryは存在しません)。 私の質問は、パフォーマンスカウンターを追加する前にレジストリの有効性を確認する方法(および有効性の意味)、または取得するのに30秒かかることがないようにperfカウンター操作をタイムアウトできる方法があるかどうかです例外。
回答: 「妥当性」は、あなたが知らない内部実装の詳細だと思います。 ただし、少なくとも同じレジストリキーを開いて、それらが存在するかどうかを確認することはできます。 process explorerを使用して、読み取り中のキーを把握できます。 しかし、なぜあなたも気にするのか疑問です。 破損したレジストリはあまり一般的ではありません。もしそうなら、どうしますか? できることは、やめるだけです。 したがって、例外をキャッチすることもできます。 これを他のブロック操作と同様に処理し、ワーカースレッド(uiスレッドではない)で実行し、ユーザーに進行状況を表示して、アプリがハングしていないことを知らせます。