示例#1
0
        public void TestMerge()
        {
            BatchObservableCollection <Foo> original = new BatchObservableCollection <Foo>(10);

            original.Add(new Foo(1, "1"));
            original.Add(new Foo(2, "1"));
            original.Add(new Foo(3, "1"));
            original.Add(new Foo(5, "1"));
            original.Add(new Foo(7, "1"));
            //original.Add(new Foo(11, "1"));
            //original.Add(new Foo(13, "1"));
            //original.Add(new Foo(17, "1"));


            BatchObservableCollection <Foo> update = new BatchObservableCollection <Foo>(10);

            update.Add(new Foo(1, "_2"));
            update.Add(new Foo(3, "_2"));
            update.Add(new Foo(7, "_2"));
            update.Add(new Foo(9, "2"));
            update.Add(new Foo(10, "2"));
            //update.Add(new Foo(6, "1"));
            //update.Add(new Foo(7, "1"));
            //update.Add(new Foo(12, "1"));
            //update.Add(new Foo(13, "1"));
            //update.Add(new Foo(17, "1"));
            //update.Add(new Foo(23, "1"));
            //update.Add(new Foo(19, "1"));
            //update.Add(new Foo(29, "1"));


            original.CollectionChanged += (s, a) =>
            {
                Assert.AreNotEqual(0, original.Count);
            };

            original.Merge(update, (x, y) => { return(x.ID - y.ID); }, EquivelentItemMergeBehavior.ReplaceEqualItems);


            Assert.AreEqual(5, original.Count);

            Assert.AreEqual(original[0].ID, 1);
            Assert.AreEqual(original[0].Value, "_2");

            Assert.AreEqual(original[1].ID, 3);
            Assert.AreEqual(original[1].Value, "_2");

            Assert.AreEqual(original[2].ID, 7);
            Assert.AreEqual(original[2].Value, "_2");

            Assert.AreEqual(original[3].ID, 9);
            Assert.AreEqual(original[3].Value, "2");

            Assert.AreEqual(original[4].ID, 10);
            Assert.AreEqual(original[4].Value, "2");
        }
        public void TestMerge()
        {
            BatchObservableCollection<Foo> original = new BatchObservableCollection<Foo>(10);

            original.Add(new Foo(1, "1"));
            original.Add(new Foo(2, "1"));
            original.Add(new Foo(3, "1"));
            original.Add(new Foo(5, "1"));
            original.Add(new Foo(7, "1"));
            //original.Add(new Foo(11, "1"));
            //original.Add(new Foo(13, "1"));
            //original.Add(new Foo(17, "1"));

            BatchObservableCollection<Foo> update = new BatchObservableCollection<Foo>(10);

            update.Add(new Foo(1, "_2"));
            update.Add(new Foo(3, "_2"));
            update.Add(new Foo(7, "_2"));
            update.Add(new Foo(9, "2"));
            update.Add(new Foo(10, "2"));
            //update.Add(new Foo(6, "1"));
            //update.Add(new Foo(7, "1"));
            //update.Add(new Foo(12, "1"));
            //update.Add(new Foo(13, "1"));
            //update.Add(new Foo(17, "1"));
            //update.Add(new Foo(23, "1"));
            //update.Add(new Foo(19, "1"));
            //update.Add(new Foo(29, "1"));

            original.CollectionChanged += (s, a) =>
            {
                Assert.AreNotEqual(0, original.Count);
            };

            original.Merge(update, (x, y) => { return x.ID - y.ID; }, EquivelentItemMergeBehavior.ReplaceEqualItems);

            Assert.AreEqual(5, original.Count);

            Assert.AreEqual(original[0].ID, 1);
            Assert.AreEqual(original[0].Value, "_2");

            Assert.AreEqual(original[1].ID, 3);
            Assert.AreEqual(original[1].Value, "_2");

            Assert.AreEqual(original[2].ID, 7);
            Assert.AreEqual(original[2].Value, "_2");

            Assert.AreEqual(original[3].ID, 9);
            Assert.AreEqual(original[3].Value, "2");

            Assert.AreEqual(original[4].ID, 10);
            Assert.AreEqual(original[4].Value, "2");
        }
示例#3
0
        public void TestOffThread()
        {
            ManualResetEvent ev = new ManualResetEvent(false);

            ThreadPool.QueueUserWorkItem((x) =>
            {
                BatchObservableCollection <Foo> bc = new BatchObservableCollection <Foo>(2);

                bc.Add(new Foo());
                bc.Add(new Foo());
                bc.Add(new Foo());

                Thread.Sleep(50);

                bc.Add(new Foo());
                bc.Add(new Foo());
                bc.Add(new Foo());
                bc.Add(new Foo());


                ev.Set();
            },
                                         null);

            ev.WaitOne();
        }
示例#4
0
        private void OnUpdateUI()
        {
            if (StatisticsSelected)
            {
                PackageDiscardedWarning = false;

                TotalReceived = StringFormatUtils.GetSizeAsString(_rateMonitor.TotalReceivedBytes);
                RateReceive   = StringFormatUtils.GetRateAsString(_rateMonitor.CurrentReceiveRate) + " (" + StringFormatUtils.GetSizeAsString(_rateMonitor.CurrentReceiveRate / 8) + "/s)";
                TotalSent     = StringFormatUtils.GetSizeAsString(_rateMonitor.TotalSentBytes);
                RateSend      = StringFormatUtils.GetRateAsString(_rateMonitor.CurrentSendRate) + " (" + StringFormatUtils.GetSizeAsString(_rateMonitor.CurrentSendRate / 8) + "/s)";;

                // dont update conversation view if more than 100kbps
                // is received and view not selected.
                if (_rateMonitor.CurrentReceiveRate > 100000)
                {
                    return;
                }
            }
            else
            {
                PackageDiscardedWarning = ((DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond) - _lastPackageDiscarded) < 10000;
            }

            _conversation.BeginBatch();

            Transmission msg;

            while (_incomingQueue.TryTake(out msg))
            {
                _conversation.Add(new ConversationItemViewModel(msg, _formatter));
            }

            while (_conversation.Count > _incomingQueue.BoundedCapacity)
            {
                _conversation.RemoveAt(0);
            }

            _conversation.EndBatch();
        }
        public void TestOffThread()
        {
            ManualResetEvent ev = new ManualResetEvent(false);

            ThreadPool.QueueUserWorkItem((x) =>
            {
                BatchObservableCollection<Foo> bc = new BatchObservableCollection<Foo>(2);

                bc.Add(new Foo());
                bc.Add(new Foo());
                bc.Add(new Foo());

                Thread.Sleep(50);

                bc.Add(new Foo());
                bc.Add(new Foo());
                bc.Add(new Foo());
                bc.Add(new Foo());

                ev.Set();

            },
            null);

            ev.WaitOne();
        }