我正在使用一个时间敏感的桌面应用程序,它广泛使用p / invoke,我想确保代码不会在CAS堆栈行走上浪费大量时间。
我已经使用了SuppressUnmanagedCodeSecurity属性,我认为这是必要的,但我可能错过了一些地方。有没有人知道是否有办法监控正在发生的CAS堆栈行程的数量,并且更好地确定安全需求的来源?
答案 0 :(得分:0)
您可以使用Process Explorer工具(来自Sysinternals)来监控您的流程。
打开Process Explorer,选择您的流程并右键单击以显示“属性”。然后,在.NET选项卡上,选择要监视的.NET CLR安全对象。 Process Explorer将显示
的计数器这些是此处描述的标准安全性能计数器 - > http://msdn.microsoft.com/en-us/library/adcbwb64.aspx
您也可以使用Perfmon或编写自己的代码来监控这些计数器。
据我所知,唯一真正有用的是第1项。您可以在调试时关注它,看看它是否正在大幅增加。如果是这样,您需要检查导致安全需求的原因。
我不知道任何其他工具可以告诉你什么时候触发堆栈行走。