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); }