コード例 #1
0
 internal void LockInstance(ref MessageRpc rpc)
 {
     if (this.mode != ConcurrencyMode.Multiple)
     {
         ConcurrencyInstanceContextFacet concurrency = rpc.InstanceContext.Concurrency;
         lock (rpc.InstanceContext.ThisLock)
         {
             if (!concurrency.Locked)
             {
                 concurrency.Locked = true;
             }
             else
             {
                 MessageRpcWaiter waiter = new MessageRpcWaiter(rpc.Pause());
                 concurrency.EnqueueNewMessage(waiter);
             }
         }
         if (this.mode == ConcurrencyMode.Reentrant)
         {
             rpc.OperationContext.IsServiceReentrant = true;
         }
     }
 }
 internal void LockInstance(ref MessageRpc rpc)
 {
     if (this.mode != ConcurrencyMode.Multiple)
     {
         ConcurrencyInstanceContextFacet concurrency = rpc.InstanceContext.Concurrency;
         lock (rpc.InstanceContext.ThisLock)
         {
             if (!concurrency.Locked)
             {
                 concurrency.Locked = true;
             }
             else
             {
                 MessageRpcWaiter waiter = new MessageRpcWaiter(rpc.Pause());
                 concurrency.EnqueueNewMessage(waiter);
             }
         }
         if (this.mode == ConcurrencyMode.Reentrant)
         {
             rpc.OperationContext.IsServiceReentrant = true;
         }
     }
 }