private static TimeSpan GetMaximumAgeLimitFromRegistry(ExpirationLimit limit)
        {
            TimeSpan result;

            using (RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Services\\MSExchange RBAC", false))
            {
                int    num;
                string name;
                switch (limit)
                {
                case ExpirationLimit.RunspaceRefresh:
                    num  = 60;
                    name = "MaximumAge";
                    break;

                case ExpirationLimit.ExternalAccountRunspaceTermination:
                    num  = 1440;
                    name = "MaximumAgeExternalAccount";
                    break;

                default:
                    throw new ArgumentOutOfRangeException("limit");
                }
                if (registryKey != null)
                {
                    object value = registryKey.GetValue(name);
                    if (value != null && value is int)
                    {
                        int num2 = (int)value;
                        if (num2 > 0)
                        {
                            num = num2;
                        }
                    }
                }
                result = TimeSpan.FromMinutes((double)num);
            }
            return(result);
        }
 private bool IsMaximumAgeLimitExceeded(ExpirationLimit limit)
 {
     return(DateTime.UtcNow >= this.maxAgeLimits[(int)limit]);
 }
 public static TimeSpan GetMaximumAgeLimit(ExpirationLimit limit)
 {
     ExchangeExpiringRunspaceConfiguration.RefreshLimitsFromRegistryIfNeeded();
     return(ExchangeExpiringRunspaceConfiguration.ExpiryPeriods[(int)limit]);
 }
 private void SetMaxAgeLimit(ExpirationLimit limit)
 {
     this.maxAgeLimits[(int)limit] = DateTime.UtcNow.Add(ExchangeExpiringRunspaceConfiguration.GetMaximumAgeLimit(limit));
 }