我有一些 WPF 应用程序。我需要在 a 中执行一些代码,BackgroundWorker
并DispatcherTimer
为此使用。此外,该代码不使用 UI。
我的问题是这样可以吗?或者最好使用Timer
or while
& Thread.Sleep
?
使用Task
&Timer
或DispatcherTimer
代替更好BackgroundWorker
吗?
所以我们有两种方法可供选择。(或者更多?)
BackgroundWorker
来电DispatcherTimer || Timer || (While & Thread.Sleep)
Task
来电DispatcherTimer || Timer || (While & Thread.Sleep)
我只需要知道最佳性能解决方案。
这是一些代码
DispatcherTimer logManagerUpdater = new DispatcherTimer(DispatcherPriority.Background);
BackgroundWorker logManagerWorker = new BackgroundWorker();
private void StartLogManager()
{
logManagerWorker.DoWork += new DoWorkEventHandler(logManagerWorker_DoWork);
logManagerWorker.RunWorkerAsync();
}
void logManagerWorker_DoWork(object sender, DoWorkEventArgs e)
{
if (this.logManagerWorker.CancellationPending)
{
e.Cancel = true;
return;
}
logManagerUpdater.Interval = new TimeSpan(0, 0, 10);
logManagerUpdater.Tick += new EventHandler(logManagerUpdater_Tick);
logManagerUpdater.Start();
}
void logManagerUpdater_Tick(object sender, EventArgs e)
{
LogManagerJob();
LogDBManagerJob();
}