首页 > 解决方案 > 如何继续重用计时器

问题描述

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

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 它确实有效,我只是愚蠢的大声笑

标签: c#timer

解决方案


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

首先,控制台不是游戏开发的正确环境。任何 GUI 技术都不是。对于游戏,你有 XNA(相当过时)和 .NET Core 的一堆新选项。重要的是你有某种形式的游戏循环。或者至少模仿一个。

其次,我不确定大多数计时器在控制台应用程序中的工作情况。他们中的大多数使用通常需要 MessageQueue 的回调——这是一个 GUI 功能。我想您可以尝试多线程时间,但是如果您离开控制台应用程序,则必须重新学习所有内容。

至于您的代码:我不确定 Timer 滴答声何时发生,因为您没有指定时间间隔。但我猜要么:

  • 绝不
  • 第二个计时器开始后

推荐阅读