private void BeginWorking() { lock (this) { if (_isWorking) { return; } Status = new AsyncPurgeStatus { IsRunning = true }; _isWorking = true; worker.DoWork(() => { Work work; while (workQueue.TryDequeue(out work)) { work.Task(); } lock (this) { _isWorking = false; } }); } }
public virtual void BeginPurge(int rootID) { workQueue.Enqueue(new Work { Task = () => { var item = persister.Get(rootID); if (item == null) { return; } string title = item.Title; Status = new AsyncPurgeStatus { IsRunning = true, Progress = new PurgingStatus { Deleted = 0, Remaining = 1 }, Title = title }; trash.Purge(item, (s) => { Status = new AsyncPurgeStatus { IsRunning = true, Progress = s, Title = title }; }); Status = null; } }); BeginWorking(); }
public virtual void BeginPurgeAll() { workQueue.Enqueue(new Work { Task = () => { Status = new AsyncPurgeStatus { IsRunning = true, Progress = new PurgingStatus { Deleted = 0, Remaining = 1 }, Title = "All" }; trash.PurgeAll(s => { Status = new AsyncPurgeStatus { IsRunning = true, Progress = s, Title = "All" }; }); Status = null; }}); BeginWorking(); }
public virtual void BeginPurgeAll() { workQueue.Enqueue(new Work { Task = () => { Status = new AsyncPurgeStatus { IsRunning = true, Progress = new PurgingStatus { Deleted = 0, Remaining = 1 }, Title = "All" }; trash.PurgeAll((s) => { Status = new AsyncPurgeStatus { IsRunning = true, Progress = s, Title = "All" }; }); Status = null; } }); BeginWorking(); }
public virtual void BeginPurge(int rootId) { workQueue.Enqueue(new Work { Task = () => { var item = persister.Get(rootId); if (item == null) return; string title = item.Title; Status = new AsyncPurgeStatus { IsRunning = true, Progress = new PurgingStatus { Deleted = 0, Remaining = 1 }, Title = title }; trash.Purge(item, s => { Status = new AsyncPurgeStatus { IsRunning = true, Progress = s, Title = title }; }); Status = null; } }); BeginWorking(); }
private void BeginWorking() { lock (this) { if (_isWorking) return; Status = new AsyncPurgeStatus { IsRunning = true }; _isWorking = true; worker.DoWork(() => { Work work; while (workQueue.TryDequeue(out work)) { work.Task(); } lock (this) { _isWorking = false; } }); } }