public ControllerModel(string tableName, ITable table) : base(tableName, table) { if (controlModes == null) { FillControlModeOptions(); } table.AddTableListenerOnSynchronizationContext(SynchronizationContext.Current, (modifiedTable, key, value, _) => { switch (key) { case nameof(Mode): Mode = (ControlMode)(int)(double)value; break; case "Value": ShowValue((double)value); break; default: break; } }, NetworkTables.NotifyFlags.NotifyImmediate | NetworkTables.NotifyFlags.NotifyUpdate | NetworkTables.NotifyFlags.NotifyNew); ZeroOutput = new Command(() => Numbers["Value"] = 0.0); ClearGraph = new Command(() => { lock (syncRoot) { OutputPoints.Clear(); SetpointLine.Clear(); } }); }