我有一些 WPF 应用程序。我需要在 a 中执行一些代码,BackgroundWorker 并DispatcherTimer为此使用。此外,该代码不使用 UI。
我的问题是这样可以吗?或者最好使用Timeror 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();
}