小编End*_*der的帖子

无效的跨线程访问问题

我有两个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万
查看次数

识别奇数,偶数 - 二进制与mod

最近我不得不确定一个数字是奇数还是偶数为大数.我想到了一个想法,将一个数字识别为奇数或甚至通过与1进行AND运算并将结果与​​1进行比较

x & 1 == 1 // even or odd 
Run Code Online (Sandbox Code Playgroud)

我在实践中从未见过这种实现.您经常看到的最常见的方式是:

x % 2 == 0
Run Code Online (Sandbox Code Playgroud)

我决定对这两种方法进行一些性能检查,二进制方法在我的机器上看起来稍快一点.

int size = 60000000;
List<int> numberList = new List<int>();
Random rnd = new Random();

for (int index = 0; index < size; index++)
{
    numberList.Add(rnd.Next(size));
}

DateTime start;
bool even;

// regular mod
start = DateTime.Now;
for (int index = 0; index < size; index++)
{
    even = (numberList[index] % 2 == 0);
}
Console.WriteLine("Regualr mod : {0}", DateTime.Now.Subtract(start).Ticks);

// binary 
start = …
Run Code Online (Sandbox Code Playgroud)

c# performance

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

WPF应用程序冻结了Windows 7

.NET 3.5 WPF在Windows 7 64bit上有一个应用程序.我遇到拖动和移动主应用程序窗口时发生的奇怪的系统冻结问题.基本上整个系统冻结(UI),应用程序停止渲染.启动任务管理器(CTRL+ ALT+ DEL)会解冻系统和应用程序.

应用程序本身是一个交易应用程序,它在后台线程中处理大量消息.

有没有人遇到过这类问题?特别是任务管理器解锁冻结的奇怪之处.这种奇怪行为的原因是什么?

我几乎可以肯定它与将某些操作分派给UI线程有关.

.net c# wpf multithreading

7
推荐指数
1
解决办法
6280
查看次数