File: System\ServiceModel\Channels\SynchronizedRandom.cs
Project: ndp\cdf\src\NetFx40\System.ServiceModel.Channels\System.ServiceModel.Channels.csproj (System.ServiceModel.Channels)
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//----------------------------------------------------------------
 
namespace System.ServiceModel.Channels
{
    using System;
 
    class SynchronizedRandom : Random
    {
 
        public SynchronizedRandom()
            : base()
        {
            this.ThisLock = new object();
        }
 
        public SynchronizedRandom(int seed)
            : base(seed)
        {
            this.ThisLock = new object();
        }
 
        protected object ThisLock
        {
            get;
            private set;
        }
 
        public override int Next(int minValue, int maxValue)
        {
            lock (this.ThisLock)
            {
                return base.Next(minValue, maxValue);
            }
        }
 
        public override int Next()
        {
            lock (this.ThisLock)
            {
                return base.Next();
            }
        }
 
        public override int Next(int maxValue)
        {
            lock (this.ThisLock)
            {
                return base.Next(maxValue);
            }
        }
 
        public override void NextBytes(byte[] buffer)
        {
            lock (this.ThisLock)
            {
                base.NextBytes(buffer);
            }
        }
 
        public override double NextDouble()
        {
            lock (this.ThisLock)
            {
                return base.NextDouble();
            }
        }
 
        protected override double Sample()
        {
            lock (this.ThisLock)
            {
                return base.Sample();
            }
        }
    }
}