我有两个ViewModel类:PersonViewModel和PersonSearchListViewModel.PersonViewModel实现的字段之一是通过WCF下载的配置文件映像(在独立存储中本地缓存).PersonSearchListViewModel是一个容器类,它包含一个Persons列表.由于加载图像相对较重,因此PersonSearchListViewModel仅加载当前页面,下一页面和上一页面的图像(结果在UI上分页)...为了进一步改善图像的负载,我将图像的加载放在另一个线程上.但是,多线程方法会导致跨线程访问问题.
PersonViewModel:
public void RetrieveProfileImage()
{
Image profileImage = MemorialDataModel.GetImagePerPerson(Person);
if (profileImage != null)
{
MemorialDataModel.ImageManager imgManager = new MemorialDataModel.ImageManager();
imgManager.GetBitmap(profileImage, LoadProfileBitmap);
}
}
private void LoadProfileBitmap(BitmapImage bi)
{
ProfileImage = bi;
// update
IsProfileImageLoaded = true;
}
private BitmapImage profileImage;
public BitmapImage ProfileImage
{
get
{
return profileImage;
}
set
{
profileImage = value;
RaisePropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("ProfileImage"));
}
}
Run Code Online (Sandbox Code Playgroud)
PersonSearchListViewModel:
private void LoadImages()
{
// load new images
Thread loadImagesThread = new Thread(new ThreadStart(LoadImagesProcess));
loadImagesThread.Start();
//LoadImagesProcess(); If executed on the …Run Code Online (Sandbox Code Playgroud)