我正在控制台上做一个简单的游戏练习,每个回合都需要时间限制,我在尝试制作游戏时遇到了问题,因此可以多次使用计时器。我有这个:
class Program
{
static Timer timer = new Timer(1000);
static int t = 10;
static void Main(string[] args)
{
timer.Elapsed += Timer_Elapsed1;
timer.Start();
Console.ReadLine();
t = 10;
timer.Start();
Console.ReadLine();
}
我的想法是第二个timer.Start()
将获得与第一个相同的结果,但是什么也没有发生。
private static void Timer_Elapsed1(object sender, ElapsedEventArgs e)
{
t--;
Console.WriteLine("Hello!");
if (t == 0)
{
Console.WriteLine("Goodbye!");
timer.Stop();
}
}
第二个timer.Start()
为什么不做任何事情?如何做到这一点,以便可以再次使用timer.Start(),它将与第一次相同?我正在使用System.Timers
NVM确实有效,我只是傻瓜大声笑
答案 0 :(得分:0)
尝试停止或禁用第一次计时器,然后再尝试再次开始。
答案 1 :(得分:0)
我不得不给你一些免责声明:
首先,控制台不是正确的游戏开发环境。 GUI技术都不是。对于游戏,您拥有XNA(具有日期限制),并且具有.NET Core,bunch of new Options。重要的是您拥有某种形式的Game Loop。或至少模仿一个。
其次,我不确定大多数计时器在控制台应用程序中的运行情况。它们大多数使用回调,通常需要MessageQueue-这是GUI功能。我猜您可以尝试使用多线程,但是如果您离开控制台应用程序,则必须重新学习一切。
至于您的代码:由于您未指定间隔,因此我不确定何时发生计时器滴答。但我猜是: