最近我读到了下面的post on SO
根据这个线程的同事的说法,只需捕获引用(无论是否有OperationContextScope的帮助),就可以安全地从另一个线程引用OperationContext.Current。
我的问题是:这是真的吗?我可以看到许多OperationContext的一次性成员。根据一个非常简单的测试-引用从线程池捕获的OpertionContext,像IncomingMessageHeaders这样的排队线程值会消失(被释放,不再有效)。
从请求线程中抓取什么是必需的,并且不依赖于操作上下文及其属性的生命周期,不是更安全吗?
发布于 2013-05-28 16:48:31
基本上,来自Msdn article
从服务操作中使用OperationContext来访问当前操作执行环境。具体地说,操作上下文用于访问双工服务中的回调通道,跨操作的各个部分存储额外的状态数据,以及访问传入消息头和属性以及添加传出消息头和属性。
和this
OperationContext -该类表示运行时为每个操作收集的操作信息。这包括传入消息标头、传入消息属性、传入安全标识和其他信息等信息。此类的扩展既可以扩展OperationContext的行为,也可以存储每个操作的状态。
我认为您可以获得一些服务配置,这些配置允许您访问OperationContext值(玩弄服务的实例管理、服务模式等)。但是--在这种情况下,如果你的“服务实例模式”将来会改变--你可以破坏所有基于这个假设构建的功能。
我同意你的观点,我更喜欢自己处理状态值(当需要的时候)。
https://stackoverflow.com/questions/16781310
复制相似问题