示例#1
0
        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;
                    }
                });
            }
        }
示例#2
0
        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();
		}
示例#4
0
 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;
						}
					});
			}
		}