如何保持重用计时器

时间:2018-10-18 15:00:23

标签: c# timer

我正在控制台上做一个简单的游戏练习,每个回合都需要时间限制,我在尝试制作游戏时遇到了问题,因此可以多次使用计时器。我有这个:

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确实有效,我只是傻瓜大声笑

2 个答案:

答案 0 :(得分:0)

尝试停止或禁用第一次计时器,然后再尝试再次开始。

C# - how do you stop a timer?

答案 1 :(得分:0)

我不得不给你一些免责声明:

首先,控制台不是正确的游戏开发环境。 GUI技术都不是。对于游戏,您拥有XNA(具有日期限制),并且具有.NET Core,bunch of new Options。重要的是您拥有某种形式的Game Loop。或至少模仿一个。

其次,我不确定大多数计时器在控制台应用程序中的运行情况。它们大多数使用回调,通常需要MessageQueue-这是GUI功能。我猜您可以尝试使用多线程,但是如果您离开控制台应用程序,则必须重新学习一切。

至于您的代码:由于您未指定间隔,因此我不确定何时发生计时器滴答。但我猜是:

  • 从不
  • 第二个计时器启动后