1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| public class Brakers
{
#region State Changed
public class State
{
internal State(bool sig1, bool sig2, bool sig3) => (Sig1, Sig2, Sig3) = (sig1, sig2, sig3);
public bool Sig1 { get; }
public bool Sig2 { get; }
public bool Sig3 { get; }
}
public class StateChangedEventArgs : EventArgs
{
public StateChangedEventArgs(State state, DateTime when) => (State, When) = (state, when);
public State State { get; }
public DateTime When { get; }
}
public delegate void StateChangedEventHandler(object source, StateChangedEventArgs args);
public event StateChangedEventHandler StateChanged;
private void OnStateChanged() => StateChanged?.Invoke(this, new StateChangedEventArgs(new State(_sig1, _sig2, _sig3), DateTime.Now));
#endregion
#region Synchronization Lock
private object _lock = new object();
private bool Get(in bool prop)
{
lock (_lock) return prop;
}
private void Set(ref bool prop, bool value)
{
lock (_lock)
{
if (prop == value) return;
prop = value;
OnStateChanged();
}
}
#endregion
#region Signaux
private bool _sig1;
public bool Sig1 { get => Get(in _sig1); set => Set(ref _sig1, value); }
private bool _sig2;
public bool Sig2 { get => Get(in _sig2); set => Set(ref _sig2, value); }
private bool _sig3;
public bool Sig3 { get => Get(in _sig3); set => Set(ref _sig3, value); }
#endregion
} |
Partager