private void QueryUserRenameTimer(int rowIndex) { string oldname = Rows[rowIndex].TimerCanonicalName(); string newname = GetTimerName("Specify as new name:", "Rename Timer", oldname); if (newname == "Cancel") { return; } if (newname == oldname) { return; } SingleTimerLib.SingleTimer _t = TimersList[oldname]; if (_t != null) { TimerName2RowIndexDictionary.Remove(_t.Name); TimersList.Remove(_t.Name); TimerName2RowIndexDictionary.Add(newname, _t.RowIndex); _t.ReNameTimer(newname); } else { Rows.RemoveAt(rowIndex); TimerName2RowIndexDictionary.Remove(oldname); TimersList.Remove(oldname); } }
private void SingleTimer_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { SingleTimerLib.SingleTimer _t = (SingleTimerLib.SingleTimer)sender; if (sender == null) { return; } switch (e.PropertyName) { case nameof(SingleTimerLib.SingleTimer.RunningElapsedTime): ThreadSafeUpdateTimerElapsedTime(_t); DebugPrint(string.Format("From {1}: [{2}] Elapsed {0}", _t.RunningElapsedTime, "SingleTimer_PropertyChanged", e.PropertyName)); break; case nameof(SingleTimerLib.SingleTimer.RowIndex): break; case nameof(SingleTimerLib.SingleTimer.Name): DebugPrint(string.Format("{0} is a new name!", _t.Name)); Debug.Assert(TimerName2RowIndexDictionary.ContainsKey(_t.CanonicalName)); TimersList.Add(_t.CanonicalName, _t); ThreadSafeUpdateTimerNamee(_t); break; case nameof(SingleTimerLib.SingleTimer.TimerIsRunning): string message1 = "{0}: {1} is running! [{2}]"; string message2 = "{0}: {1} is stopped! [{2}]"; DebugPrint(string.Format(_t.TimerIsRunning ? message1 : message2, "SingleTimer_PropertyChanged", _t.Name, e.PropertyName)); break; default: break; } }
private void SetupSavedTimers() { Application.DoEvents(); timersDataGridView.Update(); for (int idx = 0; idx < Timers.Rows.Count; ++idx) { DataRow _r = Timers.Rows[idx]; if (!TimerName2RowIndexDictionary.ContainsKey(_r[0].ToString())) { TimerName2RowIndexDictionary.Add(_r[0].ToString(), idx); } SingleTimerLib.SingleTimer _t = TimersList.AddTimer(_r[0].ToString(), new SingleTimerLib.SingleTimer(idx, _r[0].ToString(), _r[1].ToString())); _t.PropertyChanged += SingleTimer_PropertyChanged; _t.SingleTimerChanged += SingleTimer_SingleTimerChanged; _t.TimerReset += SingleTimer_OnTimerReset; } }
private void TreadSafeDeleteDataGridViewRows() { if (timersDataGridView.InvokeRequired) { timersDataGridView.Invoke(new Action(TreadSafeDeleteDataGridViewRows)); return; } foreach (DataGridViewRow _dr in timersDataGridView.SelectedRows) { string name = timersDataGridView.CurrentRow.TimerCanonicalName(); SingleTimerLib.SingleTimer _t = TimersList[name]; _t.SingleTimerChanged -= SingleTimer_SingleTimerChanged; _t.PropertyChanged -= SingleTimer_PropertyChanged; _t.TimerReset -= SingleTimer_OnTimerReset; _t.StopTimer(); Debug.Assert(_t.CanonicalName == Timers.Rows[_t.RowIndex].TimerCanonicalName()); Timers.Rows.RemoveAt(_t.RowIndex); Timers.AcceptChanges(); ThreadSafeUpdateDataGridView(); TimerName2RowIndexDictionary.Remove(name); TimersList.Remove(name); _t.Dispose(); } }