在《并发与实例上下文模式》中,我们通过实例演示的方式讲述了基于不同实例上下文模式的并发行为。对于这个实例中的服务类型CalculatorService,读者应该还记得我们对它进行了特别的定义:通过ServiceBehaviorAttribute特性将属性将UseSynchronizationContext设置成False。至于为何要这么做,这就是本篇文章需要为你讲述的内容。为了让读者对本节介绍的内容有一个深刻的认识,我们不然去掉ServiceBehaviorAttribute特性的UseSynchronizationContext,看看最终会表现出怎样的并发行为。
现在,我们对监控程序实例中的CalculatorService进行了一些小小的改动,将ServiceBehaviorAttribute特性的UseSynchronizationContext属性设置为True(由于True是默认值,你也可以直接将该属性去掉)。修改后的代码如下所示,采用单调实例上下文模式。你可以通过这里下载整个例子的源代码。
true)]
class CalculatorService : ICalculator
3: {
//省略成员
5: }