当前位置: 首页 > 知识库问答 >
问题:

是否可以从OnTimedEvent方法内部停止计时器(System.Timers.Timer)

段铭晨
2023-03-14

我正在努力使倒计时功能,这将停止时,计时器达到0。到目前为止发生的是,当计时器到达0(我没有按任何键)时,它一直向我发送默认的消息,直到我单击一个按钮,它才停止。

我想在ontimedevent中插入一些代码,这将停止计时器(一旦它为零,显示消息并停止向我发送垃圾邮件)。我已经尝试了atimer.stopatimer.enabled=false;等的多个变体。

当前上下文中不存在名称“计时器”。

代码:

using System;
using System.Timers;

namespace MyProject
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Main thread still running");
            Console.WriteLine("Press X to save the world.");
            Console.WriteLine("You have 10 SECONDS!");

            System.Timers.Timer aTimer = new System.Timers.Timer(1000);
            aTimer.Elapsed += OnTimedEvent;
            aTimer.Enabled = true;


            ConsoleKeyInfo input = Console.ReadKey(true);

            switch (input.KeyChar)
            {
                default:
                    Console.WriteLine("Blah blah");
                    aTimer.Enabled = false;
                    break;
            }

            Console.ReadKey();
        }

        private static int _countDown = 10; // Seconds
        private static bool dMade = false;

        static void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            if (dMade == false)
            {
                if (_countDown-- <= 0)
                {
                    Console.WriteLine("You have doomed us all! DOOMED US ALL I TELL YOU!!!");
                }
                else
                {
                    Console.CursorLeft = 0;
                    Console.ForegroundColor
                        = ConsoleColor.Red;
                    Console.Write(_countDown + " ");
                    Console.ForegroundColor
                        = ConsoleColor.Gray;
                }
            }
            else
            {
                Console.WriteLine("Success! The world is saved. Congrats!");
            }
        }

共有1个答案

通令
2023-03-14

ontimedevent中,对象源是定时器。您可以通过以下行来阻止它:

((System.Timers.Timer) source).Enabled = false;
 类似资料:
  • 问题内容: 我正在尝试在ActionListener中停止计时器。以下是我正在尝试执行的代码。我打算停止在actionPerformed方法内满足特定条件时创建的计时器。timer.stop()不起作用,编译器不允许我这样做。 任何帮助。建议,建议将非常有帮助。 } 在此先感谢克里希南 问题答案: 也可能: 或者,使用事件对象获取源(并将其 强制转换为boo ): 或者,将计时器保留在实例变量中,

  • 问题内容: 有两个容器A和B。一旦容器A启动,将执行一个过程,然后容器将停止。容器B只是一个Web应用程序(例如expressjs)。是否可以从容器B启动A? 问题答案: 可以向Docker授予容器访问权限,以便它可以在主机上生成其他容器。您可以通过在容器内部暴露docker套接字来执行此操作,例如: 现在,如果容器中有可用的客户端,则可以控制主机上的docker守护程序,并使用它生成“容器A”。

  • 问题内容: 是否有可能以某种方式停止或终止JavaScript,从而防止再次发生基于JavaScript的执行,而无需重新加载浏览器? 我在想JavaScript等同于PHP。 问题答案: 简短答案: 如果您想了解更多,请继续阅读。 您是否要停止JavaScript的开发/调试工作? 代码中的表达式将停止页面执行,然后您的浏览器开发人员工具将使您可以查看页面冻结时的状态。 您是否要故意停止设计您的

  • 问题内容: 假设我有一个Python函数和。旨在以递归方式调用自身。不应递归调用。有没有办法确定是否已递归调用它? 问题答案: 为此使用追溯模块: 因此,如果堆栈中的任何条目指示从调用了代码,则该调用是(间接)递归的。该方法使您可以轻松访问此数据。下面的示例中的语句仅计算函数名称的完全匹配数。为了使它更漂亮(感谢agf的想法),您可以将其变成装饰器:

  • 我想用Lambda函数部署AWS CDK堆栈。用例是支持类似于Trek10无服务器CI/CD管道中描述的功能,相关代码如下。 简而言之,AWS代码管道仅支持在单个Git分支中侦听更改。我想听听与创建repo和分支相关的GitHub事件,并创建代码管道实例来响应这些事件,以便每个Git存储库的每个分支都有一个管道。我想要一个Lambda来监听GitHub事件并创建CDK堆栈。Trek10示例使用Py

  • 本文向大家介绍是否可以从一个static方法内部发出对非static方法的调用?相关面试题,主要包含被问及是否可以从一个static方法内部发出对非static方法的调用?时的应答技巧和注意事项,需要的朋友参考一下 不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。也就是说,当一个stati