0

我正在以 30 毫秒(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;

}

谢谢

4

1 回答 1

0

使用相同的代码,您可以通过强制垃圾收集来解决内存问题。对于那个地方上面的代码BitmapSource.Create

//force garbage collection
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
于 2017-11-27T18:54:17.040 回答