【发布时间】:2011-08-28 16:55:08
【问题描述】:
我希望能够刷新我的数据网格,因为我正在更新我的数据库数据网格上的表并希望查看网格的变化,有没有什么方法可以每 1 分钟自动更新一次数据网格?
【问题讨论】:
我希望能够刷新我的数据网格,因为我正在更新我的数据库数据网格上的表并希望查看网格的变化,有没有什么方法可以每 1 分钟自动更新一次数据网格?
【问题讨论】:
我最终使用了DispatcherTimer,它为我简化了一些线程问题:
private static DispatcherTimer _dataUpdateTimer = null;
private ObservableCollection<Item> _items;
public ObservableCollection<Item> Items
{
get { return _items; }
set
{
if (_items == value)
return;
_items = value;
this.OnPropertyChanged(nameof(Items));
}
}
private void SetupDataUpdateTimer()
{
_dataUpdateTimer = new DispatcherTimer();
_dataUpdateTimer.Tick += OnDataUpdateEvent;
_dataUpdateTimer.Interval = TimeSpan.FromMilliseconds(10000);
_dataUpdateTimer.Start();
}
private void OnDataUpdateEvent(object sender, EventArgs e)
{
this.Items = ... add or remove items
// ...
}
当我之前只使用基本的Timer 时,我收到了这个错误:
System.InvalidOperationException
HResult=0x80131509
Message=The calling thread cannot access this object because a different thread owns it.
Source=WindowsBase
StackTrace:
at System.Windows.Threading.Dispatcher.VerifyAccess()
at System.Windows.DependencyObject.GetValue(DependencyProperty dp)
at System.Windows.Controls.Primitives.Selector.get_SelectedValue()
at ...
at System.Timers.Timer.MyTimerCallback(Object state)
【讨论】:
以后您可以使用ObservableCollection 绑定网格,这样您就可以避免手动刷新。
【讨论】:
【讨论】: