private void SetSequenceRetryCommand(AlarmInfo alarmInfo, FALibrary.Sequence.FASequence sequence) { Action<object, PropertyChangedEventArgs> confirmStatus = null; PropertyChangedEventHandler changedStatus = delegate(object sender, PropertyChangedEventArgs e) { if (confirmStatus != null) confirmStatus(sender, e); }; alarmInfo.ClearAlarm = new CommandHandler( obj => { if (Equipment.AlarmClearable() == false) return; Equipment.TurnOffSound(); ClearAlarm(alarmInfo); sequence.PropertyChanged -= changedStatus; if (Equipment.State == Equipment.StateRun || Equipment.State == Equipment.StateRundown) { sequence.Resume(); } }, false); if (sequence.State == FALibrary.Sequence.SequenceState.Suspended) alarmInfo.ClearAlarm.SetCanExecute(true); else sequence.OnSuspended += delegate(object sender, EventArgs e) { try { alarmInfo.ClearAlarm.SetCanExecute(true); } catch (Exception exception) { Manager.LogManager.Instance.WriteSystemLog(exception.ToString()); } }; }