首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义TraceSource以避免创建TraceEventCache

自定义TraceSource以避免创建TraceEventCache
EN

Stack Overflow用户
提问于 2014-02-14 18:29:54
回答 1查看 429关注 0票数 0

我的项目有很多类。每个类都使用TraceSource进行日志记录。我不想在日志记录时使用TraceEventCache。基本上,答案是我们可以告诉listner不要使用TraceOptions (CallStack、ProcessID等)编写TraceEventCache。这意味着TraceSource已经有了TraceEventCache。所以我的问题是,TraceSource类的TraceData和TraceEvent方法会为每个调用创建TraceEventCache吗?或者只是由框架为每个线程创建的单个对象,仅用于TraceSource类。

EN

回答 1

Stack Overflow用户

发布于 2014-02-15 01:36:25

您的问题取决于您认为TraceSource类是如何编写的。比起猜测,你可以查看参考源代码,包括MicrosoftMono's

无论如何,在那里你可以看到每次调用Trace(...)时都会调用这个函数。

代码语言:javascript
复制
TraceEventCache manager = new TraceEventCache(); 

据我所知,它行为像缓存的唯一方式是调用堆栈(和其他一些)属性推迟确定它们的值,直到被调用,如果被调用两次,则从局部变量返回值。这是因为像CallStack这样的东西很慢。否则,TraceEventCache只是一组乏味的属性。它不是像ASP.NET内部缓存那样的缓存。

为了提高性能,请不要让任何跟踪侦听器输出调用堆栈或任何其他可能很慢的事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21776857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档