因此,我们使用具有相关ID的公共状态上下文单例进行集中式日志记录.目的是在整个过程中跟踪id并关联不同的层.
状态上下文由多个dll和多个用户访问.
多线程发挥作用时遇到困难:
>进程1已被用户1触发
>相关ID设置为{1}
> DLL A访问状态上下文并获取相关ID {1}
>在流程1完成之前,流程2已由用户2解雇
>关联ID设置为{2}
> DLL B来自第一个进程访问状态上下文,其相关标识为{2}时应为{1}
我们如何解决这个问题?
我们认为锁定不是我们的解决方案吗?还有其他想法吗?
这是一张图
(S)->[ CorrelationID {get;set} ]
^ ^ ^
U1 <--> | | | O
U2 <--> [DLLA] <--> [DLLB] <--> [DLLC] <--> | |
U3 <-->
{Web} <--> {Domain} <-> {Data Access} <--> {DB}
(<-- Process / Thread --> )
{} =可能的DLL示例
每个用户的进程应该有1个相关ID
解决方法:
可能是,ThreadLocal< T>?
https://msdn.microsoft.com/en-us/library/dd642243%28v=vs.100%29.aspx