【发布时间】:2015-07-22 08:32:52
【问题描述】:
我在后台工作人员的 DoWork 事件中更改计时器间隔时遇到问题。通过单击按钮更改间隔时,计时器停止并且不再启动。
有人知道如何解决这个问题吗?
简单代码:
public Form1()
{
InitializeComponent();
timerTest.Tick += new EventHandler(timerTest_Tick);
timerTest.Interval = 1000;
timerTest.Start();
}
private void buttonTest_Click(object sender, EventArgs e)
{
push = true;
}
private void timerTest_Tick(object sender, EventArgs e)
{
ticks++;
labelTest.Text = ticks.ToString();
if(running == false)
{
running = true;
backgroundWorkerTest.RunWorkerAsync();
}
}
public void activate()
{
timerTest.Stop();
timerTest.Interval = 4000;
timerTest.Start();
}
private void DoWork(object sender, DoWorkEventArgs e)
{
while(running)
{
if(push == true)
{
activate();
}
}
}
private void Completed(object sender, RunWorkerCompletedEventArgs e)
{
running = false;
}
}
}
【问题讨论】:
-
Timer 类是线程安全的,但不是任何人都喜欢的方式。只要您不调用 Stop(),它就可以正常工作。代码太假了,无法给出正确的建议。
标签: c# multithreading timer backgroundworker intervals