Или еще лучше (поскольку вам может понадобиться несколько таких свойств), используя код из @Ricardo Villiamil, создайте:
int GetIntFromConfigSetting(string settingName, int defaultValue)
{
int retValue = defaultValue;
if(this.ContainsKey(settingName))
{
int sleepInterval;
if(Int32.TryParse(this[settingName], out sleepInterval)
{
retValue = sleepInterval;
}
}
return retValue;
}
Тогда используйте его из любого необходимого вам имущества.
РЕДАКТИРОВАТЬ: на самом деле, после повторного прочтения вопроса, похоже, что это решает вашу проблему только наполовину, как будто значение выходит за пределы определенного диапазона, оно все равно будет выдавать исключение.
EDIT2: вы можете перехватить событие AppDomain.UnhandledException в статическом ctor вашего обработчика раздела конфигурации. Статический ctor запускается до доступа к любому экземпляру или статическому члену класса, поэтому он гарантирует, что вы перехватите исключение, даже если основной метод вашей службы еще не вызван.
И затем, когда вы перехватываете и регистрируете ошибку, вы можете выйти из службы с некоторым кодом ошибки! = 0 (Environment.Exit (errorCode)), чтобы диспетчер служб знал, что произошла ошибка, но не пытался вызвать отладчик. .