【发布时间】:2013-02-06 03:43:34
【问题描述】:
我有一个功能,我想每 1 秒运行一次,除此之外我还有其他东西, 因为我在我的其他函数上使用了 Thread 并避免了窗口崩溃,所以我决定使用 Backgroundworker 来调用假设像这样运行的函数:
Main()
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerAsync();
}
public void worker_DoWork(object sender, EventArgs e)
{
AutoChecking(); // thats a function should Run on Background every 1 second
}
public void AutoChecking()
{
this.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() =>
{
if (SystemisGood == true)
Updatecolor.Fill = Green;
else
Updatecolor.Fill = Red;
}));
}
然而,这个功能现在只能工作一次,任何理由或解决方案让它每秒钟工作一次并留在后台工作人员?! P.S:我不想用定时器...
【问题讨论】:
-
你为什么不想使用计时器?这就是他们的目的。
-
我宁愿只使用它,因为 Timer 会阻塞我的主函数线程...
-
你能发布代码如何使用 Timer 来阻止你的 UI 吗?使用 backgroundworker 作为计时器并不是很好的方法
-
System.Timers.Timer CheckTimer = new System.Timers.Timer(1000); CheckTimer.Elapsed += new ElapsedEventHandler(CheckTimer_Elapsed); CheckTimer.Start();
-
@CuongLe 检查评论那是我如何使用我的计时器
标签: c# wpf function backgroundworker