我有一个使用托管库的非托管应用程序。托管组件进行的调用之一是对PerformanceCounterCategory类的调用。看起来,每次访问任何方法(例如,PerformanceCounterCategory.Exists(String))时,CLR崩溃都会非常困难--异常是不可捕获的,甚至调试器也不会发生任何错误。我在事件查看器中得到以下消息:
“无法从源.NET运行时找到事件ID 0的说明。引发此事件的组件或未安装在本地计算机上或安装已损坏。您可以在本地计算机上安装或修复该组件。”
"CorperfmonExt!CollectCtrs捕捉到了异常c00000fd“
我已经研究了一些可能的解决方案(大多数都认为应该归咎于一个腐败的注册表),但没有一个有效。如果我在一个简单的.net 4应用程序中进行相同的调用,一切都会正常工作,所以我相当肯定系统设置是完整的。在.net 4之前,同样的代码工作得很好。
任何洞察力都是值得赞赏的。
编辑:我应该补充一下,非托管应用程序是作为服务运行的。
发布于 2010-09-02 20:23:15
事实证明,这一问题与VCL有关:
http://groups.google.com/group/microsoft.public.dotnet.framework.interop/browse_thread/thread/f764f9342057d78f/8bc221247a3fd79d
按照作者描述的步骤解决了这个问题。
https://stackoverflow.com/questions/3622962
复制相似问题