public bool IncrementState(string name, int count = 1) { lock (_states) { var entry = _states.Values.FirstOrDefault(e => e.StateName == name); if (entry != null) { if (entry.StateValue is int) { entry.StateValue = ((int)entry.StateValue) + count; } else { var isInt = int.TryParse((string)entry.StateValue, out var outInt); if (isInt) { outInt += count; entry.StateValue = outInt; } } _states.Values.RemoveAll(data => data.StateName == name); _states.Values.Add(entry); SaveStates(); return(true); } else { entry = new StateEntryData() { StateName = name, StateValue = count }; _states.Values.Add(entry); } SaveStates(); } return(false); }
public void SetState(string name, object value) { lock (_states) { var entry = _states.Values.FirstOrDefault(e => e.StateName == name); if (entry == null) { entry = new StateEntryData() { StateName = name, StateValue = value }; _states.Values.Add(entry); } else { entry.StateValue = value; } } SaveStates(); }