public override void Begin(object state) { try { GrayException.MapAndReportGrayExceptions(delegate() { base.SafeInitializeLoggingStream(); SiteSynchronizer siteSynchronizer = new SiteSynchronizer(this, base.SyncInfoEntry.MailboxSession, base.SyncInfoEntry.ResourceMonitor, base.SyncInfoEntry.SiteUrl, this.credentials, ((TeamMailboxSyncConfiguration)base.Config).UseOAuth, ((TeamMailboxSyncConfiguration)base.Config).HttpDebugEnabled, this.syncCycleLogStream); siteSynchronizer.BeginExecute(new AsyncCallback(this.OnSiteSynchronizationCompleted), siteSynchronizer); }); } catch (GrayException lastError) { base.LastError = lastError; this.End(); } }
private void OnSiteSynchronizationCompleted(IAsyncResult asyncResult) { if (asyncResult == null) { throw new InvalidOperationException("DocumentSyncJob.OnSiteSynchronizationCompleted: asyncResult cannot be null here."); } SiteSynchronizer siteSynchronizer = asyncResult.AsyncState as SiteSynchronizer; if (siteSynchronizer == null) { throw new InvalidOperationException("DocumentSyncJob.OnSiteSynchronizationCompleted: asyncResult.AsyncState is not SiteSynchronizer"); } siteSynchronizer.EndExecute(asyncResult); if (siteSynchronizer.LastError != null || base.IsShuttingdown) { base.LastError = siteSynchronizer.LastError; this.End(); return; } this.documentLibraryInfos = (Queue <DocumentLibraryInfo>)siteSynchronizer.SyncResult; this.SynchronizeNextDocumentLibrary(); }