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();
        }