在使用SlimTune对C#应用程序进行概要分析时,我发现在启用剖析本机函数时,有一个名为“CoUninitializeE”的函数有很多条目。 CoUninitialize似乎与COM对象有关,但是我不是直接使用任何Com对象,而Google没有关于以E结尾的版本的信息。
有没有人知道这个功能是什么/如何减少花在它上面的时间? (例如,它是否与内存管理有关,因此减少内存分配或解除分配会有所帮助?)
修改
看起来函数的名称实际上是“CoUninitializeEx”,而SlimTune只是出于某种原因切断了一封信。我仍然希望知道导致这个函数被调用的原因。
答案 0 :(得分:3)
CoInitalizeEx()和CoUninitialize()是Windows编程的核心。它们分别在一个线程上初始化和关闭COM。 CLR在Thread运行之前和之后自动调用这些函数。很难避免在.NET程序中使用COM,它是本机Windows代码的基本可扩展性模型。非常不可见,这要归功于.NET框架中隐藏管道的许多包装类。
通用诊断是你使用了很多线程。是的,很贵。线程池是一种解决方法。