gpt4 book ai didi

c# - 如果 Timer Tick 内的计算花费的时间比 Tick 长度长,会发生什么情况?

转载 作者:行者123 更新时间:2023-11-30 12:25:55 34 4
gpt4 key购买 nike

在 C# System.Windows.Forms.Timer 中,如果计时器节拍内的代码计算时间比节拍长度长,会发生什么情况?

例如,在下面的代码中,如果更新标签的时间比滴答的时间间隔(1 秒)长,会发生什么情况?

private void timerProgress_Tick( object sender, EventArgs e )
{
if( label.Value <= label.Maximum )
{
label.Value = item;
}
update_label();
}

虽然这似乎是一个显而易见的问题,但我似乎找不到任何答案。

最佳答案

如问题评论中所述,System.Windows.Forms.Timer 将对 Tick 事件进行排队,如果全部<则阻塞 UI 线程/em> Tick 事件花费的时间比设置的时间间隔长。

事件将根据需要继续计算,与间隔时间无关。

例如,如果您要制作一个滴答为一秒的倒数计时器,但它包含需要 1.3 秒的计算,则会延迟。这意味着您的倒计时时间将不正确,因为 30 秒倒计时实际上将持续约 39 秒,而不管一秒 Tick 长度如何。

当然,长时间运行的任务不应该在 Timer 事件中完成,因为这些任务被强制到 UI 线程,您不应该阻塞该线程。

关于c# - 如果 Timer Tick 内的计算花费的时间比 Tick 长度长,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30370548/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com