我有一个Visual Studio 2010的Visual Studio插件,用于评估许多表达式(包括当前堆栈帧中的变量)。它反复拨打电话:
foreach (EnvDTE.Expression expression in dte.Debugger.CurrentStackFrame.Locals)
和
dte.Debugger.GetExpression("CanSerializeToString(" + expression + ")", false);
和
dte.Debugger.GetExpression("SerializeToString(" + expression + ")", false);
其中" SerializeToString"方法在正在调试的客户端应用程序中定义。
我注意到它评估的表达式越多,得到的速度就越慢。当我扩展数组的内容时,我可以坐下来观看,因为它需要花费一秒钟来评估每个数组元素表达式,并且每个数组元素的表达时间都比前一个要长。
在评估一个表达式之后,我需要进行某种清理,这样它就不会变慢,变慢和变慢吗?
答案 0 :(得分:0)
我知道这不是直接回答你的问题,但看起来你正在尝试做一些与此插件非常相似的事情:
https://visualstudiogallery.msdn.microsoft.com/c6a21c68-f815-4895-999f-cd0885d8774f
我使用的策略是我没有创建序列化程序的客户端代码,但它是在addin代码中完成的,运行速度相当快。它是开源的,所以请随时查看。