private void ProcessRemoteSettingsFile(VersionedDeserializedRemoteSettings remoteSettings)
 {
     if (!cancellationTokenSource.IsCancellationRequested)
     {
         if (remoteSettingsStorageHandler.DoSettingsNeedToBeUpdated(remoteSettings.FileVersion))
         {
             IRemoteSettingsTelemetryActivity remoteSettingsTelemetryActivity = remoteSettingsTelemetry.CreateActivity("VS/Core/RemoteSettings/Apply");
             using (Mutex mutex = new Mutex(false, "Global\\7BCAEF5B-E7EA-428D-84AF-105BCD4D93FC-" + fileName.Replace('.', '-')))
             {
                 bool flag = false;
                 try
                 {
                     flag = mutex.WaitOne(-1, false);
                 }
                 catch (AbandonedMutexException)
                 {
                     flag = true;
                 }
                 if (flag)
                 {
                     if (!remoteSettingsStorageHandler.DoSettingsNeedToBeUpdated(remoteSettings.FileVersion))
                     {
                         return;
                     }
                     remoteSettingsTelemetryActivity.Start();
                     logger.LogVerbose("Applying new settings for " + Name);
                     if (remoteSettingsStorageHandler.FileVersion == string.Empty)
                     {
                         remoteSettingsStorageHandler.DeleteAllSettings();
                         remoteSettingsStorageHandler.SaveSettings(remoteSettings);
                     }
                     else
                     {
                         remoteSettingsStorageHandler.DeleteSettingsForFileVersion(remoteSettings.FileVersion);
                         remoteSettingsStorageHandler.SaveSettings(remoteSettings);
                         remoteSettingsStorageHandler.CleanUpOldFileVersions(remoteSettings.FileVersion);
                     }
                     remoteSettingsTelemetryActivity.End();
                     mutex.ReleaseMutex();
                 }
             }
             remoteSettingsTelemetryActivity.Post(new Dictionary <string, object>
             {
                 {
                     "VS.Core.RemoteSettings.SettingsCount",
                     remoteSettings.Settings.Count
                 }
             });
         }
         else
         {
             logger.LogVerbose("Settings for " + Name + " are the same as cached version");
             ValidateStoredRemoteSettings();
         }
     }
 }