private void WriteLeaseFileEntry(string leaseFilePath, LeaseFileEntry leaseFileEntry) { using (FileStream fileStream = new FileStream(leaseFilePath, FileMode.Create, FileAccess.ReadWrite, FileShare.None)) { SoapFormatter soapFormatter = new SoapFormatter(); soapFormatter.Serialize(fileStream, leaseFileEntry); } }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); base.InternalProcessRecord(); string instanceId = this.ServiceInstance.InstanceId; ArbitrationConfigFromAD arbitrationConfigFromAD = SyncDaemonArbitrationConfigHelper.GetArbitrationConfigFromAD(instanceId); string path = string.Format("\\\\{0}", arbitrationConfigFromAD.RidMasterInfo.RidMasterServer); string path2 = Path.Combine(path, SyncDaemonArbitrationConfigHelper.SyncDaemonLeaseShare); string leaseFilePath = Path.Combine(path2, SyncDaemonArbitrationConfigHelper.GetLeaseFileName(instanceId)); Guid guid = LocalSiteCache.LocalSite.Guid; LeaseFileEntry leaseFileEntry = new LeaseFileEntry(SyncDaemonArbitrationConfigHelper.ServerNameForFakeLock, Guid.NewGuid().ToString("N"), arbitrationConfigFromAD.RidMasterInfo.RidMasterVersionFromAD, new DateTime(DateTime.UtcNow.Ticks + new TimeSpan(0, 0, arbitrationConfigFromAD.SyncDaemonArbitrationConfig.PassiveInstanceSleepInterval).Ticks, DateTimeKind.Utc), guid); try { this.WriteLeaseFileEntry(leaseFilePath, leaseFileEntry); } catch (IOException) { Thread.Sleep(1000); this.WriteLeaseFileEntry(leaseFilePath, leaseFileEntry); } TaskLogger.LogExit(); }