Scorpio 感谢,我的疑惑是Action如何转换为ETTask,不好意思我没有表述清楚,然后仔细看了下原来在
private void Run(TimerAction timerAction)
{
switch (timerAction.TimerClass)
{
case TimerClass.OnceWaitTimer:
{
ETTask<bool> tcs = timerAction.Callback as ETTask<bool>;
this.Remove(timerAction.Id);
tcs.SetResult(true);
break;
}
case TimerClass.OnceTimer:
{
Action action = timerAction.Callback as Action;
this.Remove(timerAction.Id);
action?.Invoke();
break;
}
case TimerClass.RepeatedTimer:
{
Action action = timerAction.Callback as Action;
long tillTime = TimeHelper.ServerNow() + timerAction.Time;
this.AddTimer(tillTime, timerAction);
action?.Invoke();
break;
}
}
}
中根据TimerClass类型来区分了TimerAction结构体中Callback的类型,这样在switch语句的后两个case语句就将Callback 转成了Action了,解答了我的疑惑.