看了这篇文章后 ==》 WPF中UI线程频繁操作造成卡顿的处理
发现使用异步的方式逐步加载,确实有效解决了WPF线程卡顿的问题。
由于在WPF中经常会用到ObservableCollection作为列表控件的绑定对象,因此尝试封装了一个异步加载的代码,提供参考学习。
代码如下:
1.ObservableCollection.Load扩展方法
public static class ObservableCollectionAsyncLoadEx
{
public static ObservableCollectionAsyncLoadHelper<T> Load<T>(this ObservableCollection<T> targetData, ObservableCollection<T> sourceData)
{
var helper = new ObservableCollectionAsyncLoadHelper<T>();
helper.Load(targetData, sourceData);
return helper;
}
}
2.异步加载实现
public class ObservableCollectionAsyncLoadHelper<T>
{
public event Action Loaded;
public void Pause()
{
bPause = true;
}