得到它的 "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);
}
嗯,标题比较乱,不知道怎么表达好,欢迎指正。
我有一个 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);
}