首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中使用Windows计时器停止滴答

在C#中使用Windows计时器停止滴答
EN

Stack Overflow用户
提问于 2012-09-18 15:52:58
回答 1查看 879关注 0票数 1

我已经在构造函数中初始化了一个windows表单计时器(并通过编写"pTimer.Enabled=true“设置它在适当的时间运行。在构造函数中-

代码语言:javascript
复制
            pTimer = new Timer();
            pTimer.Enabled = false; 
            pTimer.Interval = timerSpeed;
            pTimer.Tick += new EventHandler(pTimer_Tick);

在计时器回调中,我正在检查我的工作是否已经完成。一旦是,我想停止计时器(也就是说它不会一直调用pTimer_Tick回调)并关闭正在进行日志记录的流器。

代码语言:javascript
复制
           private void pTimer_Tick(object sender, EventArgs e)
           {
                bool tempFinished = finished();
                log("finished() in timer tick = " + tempFinished.ToString());
                if (tempFinished)
                {
                     if (pTimer.Enabled == true)
                     {
                         log("We are going to stop the timer");
                         pTimer.Enabled = false;
                         Application.DoEvents();
                         log("We are going to close the streamwriter");
                         //myStreamWriter.Close();
                     }
                }
           }

似乎发生了下列行为:

  1. 在第一次在==true回调中完成() pTimer_Tick之后,我们记录了“pTimer_Tick() in timer抽签= True",代码达到pTimer.Enabled = false
  2. 最初,我没有注释关闭流编写器,这会产生一个错误,因为它继续尝试写入从pTimer_Tick回调中记录的代码。
  3. 如果我们注释掉myStreamWriter.Close();(如上面所写),在1.发生之后,代码确实会继续重新输入pTimer_Tick回调,当它到达"bool tempFinished=finished()“行时,它将运行finished()方法,而finished()方法的内部日志指示它将再次输出"true”,但下一行“log ()”的日志记录永远不会下降,而日志中出现的下一个内容是再次访问finished()函数。

有人对这里可能出了什么问题有什么建议吗?

谢谢!克里斯

EN

回答 1

Stack Overflow用户

发布于 2012-09-18 16:52:11

您正在通过设置Enabled属性启动和停止计时器。虽然你在评论中声称这是足够的,但我不相信。

尝试使用StartStop计时器函数。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12480592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档