我有一些WPF應用程序。我需要在BackgroundWorker
內執行一些代碼,我使用DispatcherTimer
。此外,該代碼不使用用戶界面。我們可以在BackgroundWorker中使用DispatcherTimer嗎?
我的問題是這樣嗎?或者最好使用Timer
或while
& Thread.Sleep
?
也就是它更好地使用Task
& Timer
或DispatcherTimer
代替BackgroundWorker
?
所以我們有2種方法可供選擇。 (還是更多?)
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();
}
你說你在* BackgroundWorker中使用'DispatcherTimer' *?你最好發佈一些代碼... – 2012-08-08 13:14:10
@DanPuzey對不起,代碼太大了。我只需要知道最好的性能解決方案。 – 2012-08-08 13:16:43
@DanPuzey我只是放了一些代碼。 – 2012-08-08 13:26:09