我正在尝试更新ObservableCollection
绑定到 UI 的数据。我知道要做到这一点,我需要使用Dispatcher
and BeginvInvoke()
,并使其在我这样做时 UI 不会冻结,使用 BackgroundWorker 是一个很好的方法。无论如何,我已经编译并运行了所有这些,但没有任何反应。我需要每 2 分钟左右更新一次 UI,所以我也在使用DispatcherTimer
这是可行的,因为 DispatcherTimer 是 Dispatcher 的一部分,但会冻结 UI:
DispatcherTimer dispTimer = new DispatcherTimer();
dispTimer.Tick += dispTimer_Tick;
dispTimer.Interval = new TimeSpan(0, 0, 45);
dispTimer.Start();
private void dispTimer_Tick(object sender, EventArgs e)
{
PartialEmployees.Clear();
}
所以,使用 BackgroundWorker 我拼凑了这个:
DispatcherTimer dispTimer = new DispatcherTimer();
dispTimer.Tick += dispTimer_Tick;
dispTimer.Interval = new TimeSpan(0, 0, 45);
dispTimer.Start();
private void dispTimer_Tick(object sender, EventArgs e)
{
BackgroundWorker _worker = new BackgroundWorker();
_worker.DoWork += DoWork;
_worker.RunWorkerAsync();
}
private void DoWork(object sender, DoWorkEventArgs e)
{
Dispatcher.CurrentDispatcher.BeginInvoke( new Action(()=>
{
PartialEmployees.Clear();
}));
}
但是 UI 没有任何反应。我错过了什么/做得不对?