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());
        });

这种方法非常方便,优雅,推荐!

 

posted @ 2020-12-22 17:22  猪猪星竹  阅读(1008)  评论(0编辑  收藏  举报