Ejemplo n.º 1
0
        public void ClientQueueProducerConstructorTest(Random rand)
        {
            ConcurrentQueue <ProcessData> queue = new ConcurrentQueue <ProcessData>();

            TimeSpan producerThread = new TimeSpan(0, 0, 0, 0, rand.Next() % 10);
            TimeSpan consumerThread = new TimeSpan(0, 0, 0, 0, rand.Next() % 100);
            TimeSpan testThread     = TimeSpan.FromTicks(10 * (producerThread + consumerThread + new TimeSpan(0, 0, 0, 0, rand.Next() % 100)).Ticks);

            TimeSpan oneTick = new TimeSpan(1);

            producerThread += oneTick;
            consumerThread += oneTick;
            testThread     += oneTick;

            //ConcurrentQueue
            ClientQueueProducer producer = new ClientQueueProducer(queue);
            ClientQueueConsumer consumer = new ClientQueueConsumer(queue);

            StopThread requestProducerToStop = new StopThread()
            {
                Value = false
            };
            StopThread requestConsumerToStop = new StopThread()
            {
                Value = false
            };

            int prodCount             = 0;
            List <ProcessData> actual = null;

            Thread prodThread = new Thread(() => { prodCount = ProducerThread(producer, requestProducerToStop, producerThread); });
            Thread consThread = new Thread(() => { actual = ConsumerThread(consumer, requestConsumerToStop, consumerThread); });

            prodThread.Start();
            consThread.Start();

            // Let threads work
            Thread.Sleep(testThread);

            requestProducerToStop.Value = true;
            prodThread.Join();

            requestConsumerToStop.Value = true;
            consThread.Join();

            // Verification stuff
            List <ProcessData> expected = new List <ProcessData>();

            for (int i = 0; i < prodCount; i++)
            {
                expected.Add(new ProcessDataMock()
                {
                    TempData = i
                });
            }

            CollectionAssert.AreEqual(expected, actual, "consumer should be able to consume all producerThread.Ticks = {0}, consumerThread.Ticks = {1},  testThread.Ticks {2}", producerThread.Ticks, consumerThread.Ticks, testThread.Ticks);
        }
Ejemplo n.º 2
0
        private void btnConfirm_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(tbName.Text))
            {
                MessageBox.Show(@"名字不能为空!");
                return;
            }

            if (SqlHelper.ExecuteScalar("select uname from wtest where uname=@uname",
                                        new SqlParameter {
                ParameterName = "@uname", Value = tbName.Text.Trim()
            }) != null)
            {
                MessageBox.Show(@"名字已存在!");
                return;
            }

            var totalMin = StopThread?.Invoke(); //点击确认键时总共用去的分钟数
            var param    = new List <SqlParameter>
            {
                new SqlParameter {
                    ParameterName = "@uname", Value = tbName.Text.Trim()
                },
                new SqlParameter {
                    ParameterName = "@totalMin", Value = totalMin
                },
                new SqlParameter {
                    ParameterName = "@score", Value = _score
                },
            };
            var res = SqlHelper.ExecuteNonQuery(
                "INSERT INTO dbo.wtest (UNAME, TDATE, INTV, SCORE) VALUES(@uname,getdate(),@totalMin,@score)",
                param.ToArray());

            if (res > 0)
            {
                MessageBox.Show(@"保存成功!");
            }
            else
            {
                MessageBox.Show(@"保存失败!");
                return;
            }

            Close();
            ((MDIParent)Owner).Main.Close();
            var form = new FinishForm(tbName.Text.Trim(), totalMin, _score)
            {
                MdiParent = Owner, WindowState = FormWindowState.Maximized
            };

            Owner.Size = form.Size;
            form.Show();
        }
Ejemplo n.º 3
0
        private List <ProcessData> ConsumerThread(ClientQueueConsumer consumer, StopThread requestConsumerToStop, TimeSpan consumerThread)
        {
            List <ProcessData> list = new List <ProcessData>();

            while (requestConsumerToStop.Value == false || consumer.CanConsumeMore())
            {
                list.AddRange(consumer.Consume());
                Thread.Sleep(consumerThread);
            }

            return(list);
        }
Ejemplo n.º 4
0
        public virtual void TestStop()
        {
            var queue = new BlockingQueue();

            string[] data = { "a", "b", "c", "d" };
            queue.Add(data[0]);
            Assert.AreSame(data[0], queue.Next());
            var notifyThread = new StopThread
                                   (queue);

            notifyThread.Start();
            Assert.Expect(typeof(BlockingQueueStoppedException), new _ICodeBlock_110(queue));
        }
Ejemplo n.º 5
0
        public DialogViewModel()
        {
            LC = new MessageModel();
            LC.LabelContent = "Virtual NetAcquirer";

            #region Simulate NetAcquireCallback
            ///Register Commands

            Rimg     = new RandomizeImage();
            StartCmd = new StartThread(this.StartThreadAction);
            StopCmd  = new StopThread(this.StopThreadAction);

            #endregion
        }
Ejemplo n.º 6
0
        private int ProducerThread(ClientQueueProducer producer, StopThread requestProducerToStop, TimeSpan producerThread)
        {
            int i = 0;

            while (requestProducerToStop.Value == false)
            {
                producer.Add(new ProcessDataMock()
                {
                    TempData = i
                });
                Thread.Sleep(producerThread);
                i++;
            }

            return(i);
        }
Ejemplo n.º 7
0
 public virtual void TestStop()
 {
     var queue = new BlockingQueue();
     string[] data = {"a", "b", "c", "d"};
     queue.Add(data[0]);
     Assert.AreSame(data[0], queue.Next());
     var notifyThread = new StopThread
         (queue);
     notifyThread.Start();
     Assert.Expect(typeof (BlockingQueueStoppedException), new _ICodeBlock_110(queue));
 }