ListBox数据量太大,加载太慢,异步加载。
当ListBox绑定的数据量太大,加载起来比较慢。1000+的数据需要5-6秒。
.NetFrameWork 4.0
先开启一个线程,然后在线程里面调用UI线程,对绑定数据进行操作。
.NetFrameWork 4.5后,提供了新的一种线程安全访问机制,那就是用BindingOperations.EnableCollectionSynchronization使能集合同步:
var collection = new ObservableCollection<string>(); listBox.ItemsSource = collection; var lockObj = new object(); BindingOperations.EnableCollectionSynchronization(collection, lockObj); ThreadPool.QueueUserWorkItem(async _ => { await Task.Delay(1000); collection.Add(DateTime.Now.ToString()); });
这种方法非常方便,优雅,推荐!