【发布时间】:2019-11-28 06:11:25
【问题描述】:
我有一个在构造函数中创建计时器的类。
计时器完全符合我的需要,但我也希望能够使用 .Stop();和 .Start();从主程序。
还有很多,但这足以重现我的确切问题。
在下面的示例中,我可以访问 Monsters[index].M_timer 但 .Stop();报错。
class Program
{
static void Main(string[] args)
{
int index = 0;
string name = "Spider";
monster[] Monsters = new monster[100];
Monsters[index] = Create_Monster(name);
/*
Monsters[1].M_timer.Stop(); <- not how I will be using this but I need the functionality here
*/
}
public static monster Create_Monster(string _name)
{
int timer = 0;
if (_name == "Spider")
{
timer = 4000;
}
monster build = new monster(false, timer);
return build;
}
}
class monster
{
public bool can_act;
public int _timer;
public object M_timer;
public monster(bool _can_act, int _timer)
{
can_act = _can_act;
Timer M_timer = new Timer();
M_timer.Interval = _timer;
M_timer.AutoReset = true;
M_timer.Enabled = true;
M_timer.Elapsed += TimerEvent;
}
public void TimerEvent(object source, ElapsedEventArgs e)
{
can_act = true;
}
}
【问题讨论】:
-
你能在这个问题中添加错误信息吗?
-
还有什么样的定时器?你不需要秒表吗?定时器来自 System.Threading?
-
它是一个计时器,用于记录怪物在获得行动能力之前的睡眠时间。一旦动作发生,can_act 的标志就会回到 false,直到时间再次过去。启动/停止功能用于如果我想暂停怪物或者如果他们死了我需要能够处理计时器。我让它工作了。错误是在主程序中将计时器称为通用对象而不是实际计时器,这是我没有看到的愚蠢错误。
标签: c# constructor timer