我正在以30ms(30 fps)的频率在运行时更改WPF图像的来源。我得到了OutOfMemory。 在以下代码中,iImage是由wpf应用程序显示和拥有的私有对象。 bytes是一个在创建窗口时被加入并存储一次的字节数组。
如何避免outOfMemory? 有没有更好的解决方案来获得更好的性能来显示原始字节数组?
public void LoadBitmapImage(Byte[] bytes, Image iImage)
{
int bitsPerPixel = 24;
double stride = (1024 * bitsPerPixel + 7) / 8;
BitmapSource wBitmapSource = BitmapSource.Create(1024, 768, 96, 96, PixelFormats.Rgb24, null, bytes , (int)stride);
iImage.Source = wBitmapSource;
}
THKS
答案 0 :(得分:0)
使用相同的代码,您可以通过强制垃圾回收来解决内存问题。对于那个地方,以下代码BitmapSource.Create
。
//force garbage collection
System.GC.Collect();
System.GC.WaitForPendingFinalizers();