Esempio n. 1
0
        public void ContainsIsThreadSafe()
        {
            var test = new ConcurrentObservableCollection <int>(Concurrent)
            {
                1, 2, 3
            };

            var task1 = Task.Run(() =>
            {
                for (var i = 0; i < 10; i++)
                {
                    test.Contains(2);
                    Task.Delay(DelayTime).Wait();
                    test.Contains(4);
                }
            });

            var task2 = Task.Run(() =>
            {
                for (var i = 0; i < 10; i++)
                {
                    test.Add(4);
                    Task.Delay(DelayTime).Wait();
                    test.Add(5);
                }
            });

            Task.WaitAll(task1, task2);
        }
Esempio n. 2
0
        public void Read_CheckContainsWhileAdding()
        {
            var col   = new ConcurrentObservableCollection <int>(new[] { 1, 2, 3, 4, 5 });
            var task1 = new Task(() =>
            {
                for (int i = 10; i < 1000; i++)
                {
                    col.Add(i);
                    Thread.Sleep(1);
                }
            });
            bool contains = false;
            var  task2    = new Task(() => { contains = col.Contains(1); });

            task1.Start();
            Thread.Sleep(5);
            task2.Start();
            Task.WaitAll(task1, task2);

            contains.Should().BeTrue();
        }