繁体   English   中英

我可以使用计时器每x毫秒更新一次标签

Can I use a timer to update a label every x milliseconds

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这是我的代码:

Stopwatch timer = new Stopwatch();
timer.Start();
while (timer.ElapsedMilliseconds < 3000) {
    label1.Text = Convert.ToString( timer.ElapsedMilliseconds );
}
timer.Stop();

我的意思是实时更新标签的文本,所以如果timer.ElapsedMilliseconds == 1350 ,那么label1.Text = 1350 我怎样才能做到这一点? 提前致谢!

4 个回复

你最好使用System.Windows.Forms.Timer ,而不是使用Stopwatch()

即使该计时器不太准确, StopWatch(..)也能为您提供良好的控制。

只是示例sniplet:

   myTimer.Tick += new EventHandler(TimerEventProcessor);       
   myTimer.Interval = 1350;
   myTimer.Start();

   private void TimerEventProcessor(...){          
     label1.Text = "...";
   }

您不能像这样在紧密循环中更新UI,因为当UI线程正在运行该代码时,它不会响应绘制事件 你可以做一些讨厌的事情,比如“DoEvents()”,但请不要......最好只有一个Timer并在定时器事件触发时定期更新UI; 个人而言,每50毫秒是我要走的绝对最快。

这是一个WinForms应用程序吗?

问题是,当你的循环运行时,它不会给任何其他任务(比如更新GUI)任何可能性,所以GUI将更新整个循环完成。

您可以在此处添加快速且“脏”的解决方案(如果是WinForms)。 像这样修改你的循环:

while (timer.ElapsedMilliseconds < 3000) {
  label1.Text = Convert.ToString( timer.ElapsedMilliseconds );
  Application.DoEvents();
}

现在标签应该在循环运行之间更新。

如果您希望每秒更新一次,可以在while循环中使用模数运算符:

Stopwatch timer = new Stopwatch();

timer.Start();

while (timer.ElapsedMilliseconds < 3000) {
    if (timer.ElapsedMilliseconds % 1000 == 0)
    {
        label1.Text = timer.ElapsedMilliseconds.ToString();
    }
}

timer.Stop();

模数运算符给出除法运算的余数,如果毫秒是1,000的倍数,它将返回0。

我可能会考虑使用Timers 您使用上述技术进行了大量旋转 ,这可能会导致您的UI无响应。

1 在标签中显示带有MilliSeconds的计时器

我需要记录时间(以毫秒为单位)。 单击button1后,计时器将启动。 单击button2后,计时器将停止。 我需要在标签中显示时间间隔(以毫秒为单位)。 抱歉,我是IOS新手。 ...

2 如何使用增量毫秒每x毫秒执行一次操作?

我使用的计时系统会产生增量(每帧通过的毫秒数,60 fps)。 在使用计时之前,我先对帧进行计数,然后执行以下操作: 但是我不能在delta上使用相同的东西: Delta每次都会更改,而毫秒数不会精确到每秒1000的倍数。 (我使用的是Java,但这并不重要。) ...

3 如何在计时器上更新WinForm标签?

我无法更新WinForm标签属性。 详细信息:我正在尝试检查数据库并发布一些值,但看起来甚至无法更新一个标签。 我正在使用SharpDevelop。 编码: 编辑:我已经删除了所有静态修饰符。 还用新代码更新了帖子(添加了try catch和其后的消息框+更改标签的按钮) ...

4 如何将Java Timer与毫秒实时关联,并相应地更新时间变量?

我一直在做一些关于弹丸运动的代码。 我启动了一个计时器t并为其使用了构造函数10,每个动作事件我都将0.01添加到初始化为0.00的时间变量中,以模拟经过的时间。 使用这段时间,我可以计算高度/距离等。我无法找出2个问题: 1)在控制台上打印当前时间时,它会一直移到许多小数位,然后运行 ...

6 每隔x秒以速度更新标签

我正在开发我的第一个iPhone应用程序。 我必须每隔x秒用设备速度更新一个标签。 我已经创建了自己的CLController ,我可以获得设备速度,但我不知道是否必须使用NSTimer来更新我的标签。 我该怎么做? ...

7 Tkinter 每 x 秒更新一次标签图像

我有一个用于图像幻灯片放映的简单 Tkinter 应用程序。 我正在使用.after(100, rotate_image)每 100 毫秒更新一次与标签关联的图像。 updater()的定义是为了在窗口打开时将其作为无限循环运行。 由于某种原因,图像只更新一次。 它不会循环到列表中的第 2 项 ...

8 如何使用计时器每隔X秒更改标签文本

我想每5000毫秒更新一次表单中标签的文本,我一直在尝试使用计时器,但是它不起作用,我也不知道为什么。 这是我正在使用的代码: 计时器启动,每隔5秒调用一次onTimeEvent方法,但是由于某种原因,似乎该方法的执行停止在codeComboBox.Items.Clear(); ...

9 在Tkinter上每隔x毫秒调用一个函数(Pygame的set_timer等价物)

我正在开发一个用于绘制网络图的小应用程序,显示“ 你的ping速度有多快 ”。 这是相关的代码审查帖子。 基本上,我有一个管理画布的线程。 该线程针对以下方法(简化): 你可能会想,这个函数在大画布上有点慢(例如800x600)。 因为它在计算后使用了一个调用方法,所以我有一 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM