基本上,我想知道它在這裏的效率如何。INotifyCollectionChanged - 它多久發一次(以及它們如何使它如此高效/快速)?
示例代碼:
void GetItems()
{
foreach (var item in items)
myObservableCollection.Add(item);
}
這會不會關火CollectionChanged事件,每次導致UI有刷新每次?還是這樣做,直到GetItems函數完成?
基本上,WPF似乎處理得很好,我想知道他們是怎麼做到的。
因此,基本上運行和更新GUI的代碼正在執行性能優化。 – michael
是的。 WinForms只是在更改屬性時使控件失效,並且只在事件隊列爲空時重新繪製它。 –
在WPF中,每個'CollectionChanged'事件都將一個框架推送到主線程的'Dispatcher'隊列中;當調度員接近它時,它將從源值「調用」綁定更新。因此,如果有很多更改通知要處理,用戶從不會注意到任何放緩或無響應;它只是意味着一個特定的控件可能會顯示過時的數據,直到它被處理。 – Aphex