首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我需要自己清理NLog MDLC吗?

我需要自己清理NLog MDLC吗?
EN

Stack Overflow用户
提问于 2018-10-18 23:52:15
回答 1查看 128关注 0票数 0

我在REST服务器中使用带有C# 4.7.1的NLog 4.5.10。在这里,我使用方法MappedDiagnosticsLogicalContext.Set(item, value)将请求的一些参数添加到日志消息中。

现在的问题是:我是否必须手动清理它们,或者这些字典也是垃圾收集的吗?

据我所知,字典绑定到当前线程(通过使用ThreadId?)。当我有许多请求,而ThreadId又开始从零开始计数时,会发生什么?可能发生的情况是,具有相同Id的最后一个线程的值仍然在那里,或者当相应的线程被销毁时,这些对象会被销毁吗?

致以最好的问候,丹尼尔

EN

回答 1

Stack Overflow用户

发布于 2018-10-22 02:01:22

当线程对象被垃圾回收时,异步上下文将被“销毁”。但是如果线程存在于线程池中,那么它可能会“永远”存在。

也许你可以使用SetScoped:

代码语言:javascript
复制
using (MappedDiagnosticsLogicalContext.SetScoped("Property", "PropertyValue")) {
    // "Property" item is present in current context
}

另请参阅https://github.com/NLog/NLog/wiki/MDLC-Layout-Renderer#scoped-item

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

https://stackoverflow.com/questions/52877961

复制
相关文章

相似问题

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