我有两个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) 最近我不得不确定一个数字是奇数还是偶数为大数.我想到了一个想法,将一个数字识别为奇数或甚至通过与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) 我.NET 3.5 WPF在Windows 7 64bit上有一个应用程序.我遇到拖动和移动主应用程序窗口时发生的奇怪的系统冻结问题.基本上整个系统冻结(UI),应用程序停止渲染.启动任务管理器(CTRL+ ALT+ DEL)会解冻系统和应用程序.
应用程序本身是一个交易应用程序,它在后台线程中处理大量消息.
有没有人遇到过这类问题?特别是任务管理器解锁冻结的奇怪之处.这种奇怪行为的原因是什么?
我几乎可以肯定它与将某些操作分派给UI线程有关.