我正在寻找一种在后台线程中使用 System.Windows.Forms.Timer 的方法。我很难让它在后台线程中启动和停止。这就是我正在做的:
private System.Windows.Forms.Timer chkTimer = new System.Windows.Forms.Timer();
然后在 backgroundworker_dowork 方法中我有这个:
chkTimer.Interval = 2000;
chkTimer.Tick += new EventHandler(chkTimer_Tick);
chkTimer.Start();
在 Tick 方法中,我有与计时器相关的代码,但由于某种原因它不会运行。如果我在 ui 线程中声明以上内容,它就可以工作。有人可以帮我在后台线程中启动计时器吗?我不想使用 System.Timers,所以请不要建议
谢谢
最佳答案
using System.Timers;
using System.Threading.Tasks;
.
.
.
var timer = new Timer(250);
.
.
.
private void Initialize()
{
timer.Elapsed += (o, s) => Task.Factory.StartNew(() => OnTimerElapsed(o, s));
timer.Start();
}
.
.
.
private void OnTimerElapsed(object o, ElapsedEventArgs s)
{
//Do stuff
}
如果需要,您也可以去掉 OnTimerElapsed 参数“o”和“s”。
关于c# - 在后台线程中运行计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6445957/