private void PostPersistedSharedProperties(TelemetrySession telemetrySession, CancellationToken cancellationToken)
 {
     if (!ExceptionsEncounteredObtainingHardwareId.Any())
     {
         string b          = telemetrySession.GetPersistedSharedProperty(IdentityPropertyProvider.HardwareIdPropertyName) as string;
         string hardwareId = HardwareId;
         if (HardwareId != HardwareIdNotObtained && !string.Equals(hardwareId, b, StringComparison.Ordinal))
         {
             telemetrySession.SetPersistedSharedProperty(IdentityPropertyProvider.HardwareIdPropertyName, hardwareId);
         }
     }
 }
 public void GetHardwareIdWithCalculationCompletedEvent(Action <string> callback)
 {
     if (IsMachineStoreAccessible)
     {
         string hardwareId = HardwareId;
         if (!ExceptionsEncounteredObtainingHardwareId.Any())
         {
             callback(hardwareId);
         }
     }
     this.HardwareIdCalculationCompleted?.Invoke(this, EventArgs.Empty);
 }
        private string GetHardwareIdWithInvalidation()
        {
            string text = HardwareIdNotObtained;

            try
            {
                text = MachineIdentifiers["HardwareId"].LastPersistedValue;
                if (!PersistedIdWasInvalidated && string.IsNullOrWhiteSpace(text))
                {
                    PersistedIdWasInvalidated     = true;
                    PersistedIdInvalidationReason = HardwareIdNotPeristed;
                }
                if (!PersistedIdWasInvalidated)
                {
                    foreach (MachineIdentitifier item2 in from name in HardwareIdValues
                             select MachineIdentifiers[name] into id
                             where id.Type == MachineIdentitifier.IdType.PrimaryImmutableId
                             select id)
                    {
                        if (!PersistedIdWasInvalidated && !item2.IsLastPersistedValueValid)
                        {
                            PersistedIdWasInvalidated     = true;
                            PersistedIdInvalidationReason = string.Format(string.IsNullOrWhiteSpace(item2.LastPersistedValue) ? "Persisted identity '{0}' was not found." : "{0} change requires invalidation of persisted ID.", item2.Name);
                        }
                    }
                }
                MachineIdentitifier machineIdentitifier = MachineIdentifiers["ConfigVersion"];
                if (!PersistedIdWasInvalidated && string.Compare(machineIdentitifier.LastPersistedValue, MinValidConfigVersion, StringComparison.OrdinalIgnoreCase) < 0)
                {
                    PersistedIdWasInvalidated     = true;
                    PersistedIdInvalidationReason = $"Persisted config version '{machineIdentitifier.LastPersistedValue}' is less than MinValidConfigVersion '{MinValidConfigVersion}'";
                }
                if (!PersistedIdWasInvalidated && InvalidateOnPrimaryIdChange)
                {
                    foreach (MachineIdentitifier item3 in from name in HardwareIdValues
                             select MachineIdentifiers[name] into id
                             where id.Type == MachineIdentitifier.IdType.PrimaryId && !PersistedIdWasInvalidated && !id.IsLastPersistedValueValid
                             select id)
                    {
                        PersistedIdWasInvalidated     = true;
                        PersistedIdInvalidationReason = string.Format(string.IsNullOrWhiteSpace(item3.LastPersistedValue) ? "Persisted identity '{0}' was not found." : "PrimaryId '{0}' value no longer found on machine.", item3.Name);
                    }
                }
                if (PersistedIdWasInvalidated)
                {
                    text = JoinIdentifiers(HardwareIdValues.Select((string idName) => MachineIdentifiers[idName]), (MachineIdentitifier id) => id.CurrentSystemValue);
                    lazyMachineStore.Value.SetProperty(StoredPropertyNamesToInts["HardwareIdDate"], DateTime.UtcNow.ToString("o"));
                    lazyMachineStore.Value.SetProperty(StoredPropertyNamesToInts["ConfigVersion"], ConfigVersion);
                    string[] hardwareIdValues = HardwareIdValues;
                    foreach (string key in hardwareIdValues)
                    {
                        MachineIdentifiers[key].StoreValidValue();
                    }
                }
                lazyMachineStore.Value.Persist();
                return(text);
            }
            catch (Exception item)
            {
                ExceptionsEncounteredObtainingHardwareId.Add(item);
                return(text);
            }
        }