Ejemplo n.º 1
0
        /// <summary>
        /// Attempts to cancel a synchronization job and returns true if it can be cancelled and false if it cannot be cancelled.
        /// </summary>
        /// <param name="item">CancelSyncRequest</param>
        /// <returns>True if the job can be cancelled, false if it cannot be cancelled</returns>
        public bool CancelSyncJob(CancelSyncRequest item)
        {
            if (item == null)
                throw new ArgumentNullException("item");

            lock (Locker)
            {
                if (_queuedJobsLookup.Contains(item.TagName))
                {
                    for (int i = 0; i < _jobs.Count; i++)
                    {
                        if (_jobs[i].TagName == item.TagName)
                        {
                            _jobs.RemoveAt(i);
                            _queuedJobsLookup.Remove(item.TagName);
                            ServiceLocator.UIPriorityQueue().Enqueue(new CancelSyncNotification(item.TagName, true));
                            return true;
                        }
                    }
                }
                else if (_currJob != null && _currJobProgress != null && _currJob.TagName == item.TagName)
                {
                    switch (_currJobProgress.State)
                    {
                        case SyncState.Started:
                        case SyncState.Analyzing:
                            _currJobProgress.Cancel();
                            _isPendingCancel.Add(_currJob.TagName);
                            return true;
                        default:
                            return false;
                    }
                }
                return false;
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Returns a boolean indicating if the given request has been cancelled.
 /// </summary>
 /// <param name="request">The CancelSyncRequest containing information on which job to cancel.</param>
 /// <returns>A boolean indicating if the given request has been cancelled.</returns>
 public bool Cancel(CancelSyncRequest request)
 {
     return ManualQueueControl.Instance.CancelSyncJob(request);
 }