我有一个被标记为ServiceBehavior属性的服务
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
这个服务的操作有没有可能由同一个线程执行?
我在ThreadLocal变量中存储了重要数据,该数据将用于单次操作执行。
不是的,每个请求都在不同的线程中进行响应。InstanceContextMode.Single属性指定该服务对于每个请求使用相同的对象(及其成员)。
请注意,在 WCF 中,线程是由线程池处理的 => 线程在请求处理后不会被处理掉,而是返回到池中,以便可以重用于其他请求处理。我不确定 ThreadLocal<T> 如何工作,但使用 ThreadStaticAttribute 可以轻松地将值从一个请求处理传递到下一个随机请求处理,后者将使用相同的线程。