private static void JobStateChangedHandler(object sender, JobEventArgs args)
        {
            BaseJob baseJob = args.Job as BaseJob;

            if (baseJob != null)
            {
                Guid objectGuid = baseJob.RequestJobStoringMDB.ObjectGuid;
                switch (args.State)
                {
                case JobState.Failed:
                case JobState.Finished:
                    baseJob.Disconnect();
                    baseJob.JobCompletedCallback();
                    lock (MailboxSyncerJobs.syncRoot)
                    {
                        MailboxSyncerJobs.activeJobs.Remove(baseJob.GetRequestKeyGuid());
                        ((IDisposable)baseJob).Dispose();
                        if (MailboxSyncerJobs.activeJobs.Count == 0)
                        {
                            MailboxSyncerJobs.activeJobsIsEmpty.Set();
                        }
                    }
                    MRSService.Tickle(baseJob.RequestJobGuid, baseJob.RequestJobStoringMDB.ObjectGuid, MoveRequestNotification.Canceled);
                    break;

                case JobState.Waiting:
                    break;

                default:
                    return;
                }
            }
        }