private async void RunTimeTriggeredSynchronization()
 {
     try
     {
         _synchronizationTimer.Stop();
         using (_runLogger.LogStartSynchronizationRun())
         {
             foreach (var worker in _runnersById.Values)
             {
                 await worker.RunAndRescheduleNoThrow(false);
             }
         }
         _synchronizationTimer.Start();
     }
     catch (Exception x)
     {
         s_logger.Error(null, x);
     }
 }
        private async void FolderChangeWatcher_ItemSavedOrDeletedAsync(ItemSavedEventArgs e)
        {
            try
            {
                _pendingOutlookItems.AddOrUpdate(e.EntryId.EntryId, e.EntryId, (key, existingValue) => e.EntryId.Version > existingValue.Version ? e.EntryId : existingValue);
                if (s_logger.IsDebugEnabled)
                {
                    s_logger.Debug($"Partial sync:  '{_pendingOutlookItems.Count}' items pending after registering item '{e.EntryId.EntryId}' as pending sync item.");
                }
                await Task.Delay(_partialSyncDelay);

                using (_runLogger.LogStartSynchronizationRun())
                {
                    await RunAllPendingJobs();
                }
            }
            catch (Exception x)
            {
                s_logger.Error(null, x);
            }
        }