public void Dispose() { lock (this) { if (timer != null) { timer.Dispose(); } group.SendResetRequest(); reader.OnError -= this.reader_OnClose; reader.Dispose(); if (_conditionList != null) { foreach (var condition in _conditionList) { if (condition != null) { condition.AlarmActive -= cond_SendAlarm; } } } reval.Dispose(); } }