相关疑难解决方法(0)

无效的跨线程访问问题

我有两个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)

c# silverlight multithreading silverlight-3.0

26
推荐指数
1
解决办法
4万
查看次数

标签 统计

c# ×1

multithreading ×1

silverlight ×1

silverlight-3.0 ×1