public void GetCopy(ThreadSafeObservableCollection <T> copyTSOC)
        {
            //Adds new objects
            LockCookie c = _lock.UpgradeToWriterLock(-1);

            foreach (T objectT in this)
            {
                if (copyTSOC.Contains(objectT))
                {
                    continue;
                }
                copyTSOC.Add(objectT);
            }
            _lock.DowngradeFromWriterLock(ref c);

            //Removes the non existing ones
            ThreadSafeObservableCollection <T> removeCopy = copyTSOC.GetCopy();

            foreach (T objectT in removeCopy)
            {
                if (Contains(objectT))
                {
                    continue;
                }
                copyTSOC.Remove(objectT);
            }
        }
        public ThreadSafeObservableCollection <T> GetCopy()
        {
            ThreadSafeObservableCollection <T> copyTSOC = new ThreadSafeObservableCollection <T>(_dispatcher);

            LockCookie c = _lock.UpgradeToWriterLock(-1);

            foreach (T objectT in this)
            {
                copyTSOC.Add(objectT);
            }
            _lock.DowngradeFromWriterLock(ref c);

            return(copyTSOC);
        }