【发布时间】:2021-03-05 07:13:15
【问题描述】:
我正在尝试在开始按钮事件(启动我的程序 - 长时间事件)上向操作员显示计时器 00:00 我启用了计时器,但它仅在事件完成或出现消息框时才打勾。
我正在使用 C# 表单计时器。
知道如何在长事件期间在 C# 中实现计时器吗?我认为与线程计时器有关?任何例子?请帮忙 !谢谢
private void Timer_elapsed_Tick(object sender, EventArgs e)
{
timeSec++;
if(timeSec >= 60)
{
timeSec = 0;
timeMin++;
}
DrawTime();
}
private void DrawTime()
{
lbSec.Text = string.Format("{0:00}", timeSec);
lbMin.Text = string.Format("{0:00}", timeMin);
}
private void start_Click(object sender, EventArgs e)
{
timer_elapsed.Enabled = true;
//do some event (long time)
//timer not works during this event
}
// when the event finished timer works
【问题讨论】:
-
在 UI 线程上触发计时器,只要 UI 线程忙于您的代码,它就不会触发。
-
我同意我们,如何解决?
-
@klaus Gutter,好的。解决方案是什么?
-
不要直接在 Click 事件中做长处理。您可以使用任何异步事件处理程序,或启动后台线程。
标签: c# multithreading timer