public void SyncTasks(SyncCallback callback) { TaskListTaskCollection tmp = new TaskListTaskCollection(this); if (IsSmart == true) { tmp.SmartResync(() => { mTasks = tmp; OnPropertyChanged("Tasks"); OnPropertyChanged("Count"); callback(); }); } else { tmp.Resync(() => { mTasks = tmp; OnPropertyChanged("Tasks"); OnPropertyChanged("Count"); callback(); }); } }
internal void InternalSync(RawList rawList) { lock (this) { if (mTasks == null) { TaskListTaskCollection tmp = new TaskListTaskCollection(this); tmp.InternalSync(new RawList[] { rawList }); System.Threading.Interlocked.Exchange(ref mTasks, tmp); } else { mTasks.InternalSync(new RawList[] { rawList }); } mTasks.Sort(); OnPropertyChanged("Tasks"); OnPropertyChanged("Count"); } }
public void SyncTasks(SyncCallback callback) { TaskListTaskCollection tmp = new TaskListTaskCollection(this); if (!GetFlag(TaskListFlags.Smart)) { tmp.Resync(() => { mTasks = tmp; OnPropertyChanged("Tasks"); OnPropertyChanged("Count"); callback(); }); } else if (!IsFrozen && GetFlag(TaskListFlags.Smart)) { // Resync all the time for smart lists... //TODO: maybe use cache like normal lists, but for only a short time? tmp.SmartResync(() => { mTasks = tmp; OnPropertyChanged("Tasks"); OnPropertyChanged("Count"); callback(); }); } }