得到它的 "parent" 在旁边 System.Timers.Timer

Get it's "parent" in side System.Timers.Timer

嗯,标题比较乱,不知道怎么表达好,欢迎指正。

我有一个 class TaskTimer 来访问和修改其中的一些 属性,但我不知道如何在经过的计时器事件中获取它的 parent。我这样做是因为每当我停止 System.Timers.Timer 它最后一次仍然是 运行。这样做有助于防止计时器失灵。

    public List<TaskTimer> _taskTimers; 
    public void CreateTask(int _taskID, int _invterval)
    {
        TaskTimer taskTimer = new TaskTimer();
        taskTimer.taskID = _taskID;
        taskTimer.Interval = _invterval;
        taskTimer.Elapsed += new ElapsedEventHandler(OnTweakTimedEvent_autoTask);
        _taskTimers.Add(taskTimer);
    }
    public class TaskTimer : System.Timers.Timer
    {
        private int taskID { get ; set ;}
    }

这是 Eslapsed 计时器事件的示例以及我想要执行的操作:

    string currentTaskID = "something";
    private void OnTweakTimedEvent_autoTask(object sender, ElapsedEventArgs e)
    {
        if (currentTask == {tell this event to get it's taskID)
        {
            //to do here
        }
    }

我知道这个问题听起来很傻,非常感谢您的帮助!

因为您直接从Timer

继承
public class TaskTimer : System.Timers.Timer

那么sender参数应该是TaskTimer。例外情况是,如果您直接调用此方法并提供 null 或其他内容

private void OnTweakTimedEvent_autoTask(object sender, ElapsedEventArgs e)
{
   // safety first
   if(sender is not TaskTimer parent)
      throw new InvalidOperationException("Hmm, Error you must have");
  
   Console.WriteLine(parent.TaskID); 
}