public void Should_not_raise_event_after_having_called_Stop()
        {
            ThreadPool.SetMaxThreads(10, 10);
            const int VeryAggressiveTimerIntervalForMarketDataPublicationInMsec = 1;
            var       marketData = new RawMaterialMarketData("eggs", VeryAggressiveTimerIntervalForMarketDataPublicationInMsec);

            long counter = 0;

            marketData.PriceChanged += (o, args) =>
            {
                lock (this)
                {
                    if (args.Price > 0m)
                    {
                        Interlocked.Increment(ref counter);
                    }
                    Monitor.PulseAll(this);
                }
            };

            marketData.Start();

            lock (this)
            {
                if (counter == 0)
                {
                    Monitor.Wait(this, 50);
                }
            }

            Check.That(counter).IsStrictlyGreaterThan(0);

            var counterBeforeStop = Interlocked.Read(ref counter);

            marketData.Stop();

            Thread.Sleep(50);

            var counterAfterStop = Interlocked.Read(ref counter);

            Check.That(counterAfterStop).IsEqualTo(counterBeforeStop);
        }
        public void Should_not_raise_event_after_having_called_Stop()
        {
            const int VeryAggressiveTimerIntervalForMarketDataPublicationInMsec = 1;
            var marketData = new RawMaterialMarketData("eggs", VeryAggressiveTimerIntervalForMarketDataPublicationInMsec);
            
            long counter = 0;
            marketData.PriceChanged += (o, args) => counter = Interlocked.Increment(ref counter);

            marketData.Start();
            
            Thread.Sleep(80);

            Check.That(counter).IsGreaterThan(1);

            var counterBeforeStop = Interlocked.Read(ref counter);
            marketData.Stop(); // ----------

            Thread.Sleep(20);
            
            var counterAfterStop = Interlocked.Read(ref counter);

            Check.That(counterAfterStop).IsEqualTo(counterBeforeStop);
        }