/// <summary> /// Wraps execution of an <see cref="IAlarmSource"/>-plugin to avoid terminating the whole process. /// </summary> /// <param name="parameter">The parameter (of type <see cref="IAlarmSource"/>).</param> private void AlarmSourceThreadWrapper(object parameter) { IAlarmSource source = (IAlarmSource)parameter; try { source.RunThread(); } catch (ThreadAbortException) { // Ignore this exception. It is caused by calling Stop(). } catch (Exception ex) { Logger.Instance.LogFormat(LogType.Error, this, Resources.AlarmSourceThreadException, source.GetType().FullName); Logger.Instance.LogException(this, ex); } }
/// <summary> /// Wraps execution of an <see cref="IAlarmSource"/>-plugin to avoid terminating the whole process. /// </summary> /// <param name="parameter">The parameter (of type <see cref="IAlarmSource"/>).</param> private void AlarmSourceThreadWrapper(object parameter) { IAlarmSource source = (IAlarmSource)parameter; try { source.RunThread(); } catch (ThreadAbortException) { // Ignore this exception. It is caused by calling Stop(). } catch (Exception ex) { // Log any exception (the thread will end afterwards). Logger.Instance.LogFormat(LogType.Error, this, "An unhandled exception occurred while running the thread for alarm source '{0}'. The thread is being terminated. Please check the log.", source.GetType().FullName); Logger.Instance.LogException(this, ex); } }