Недостаточно памяти при использовании BitmapSource - PullRequest
0 голосов
/ 13 сентября 2011

Я изменяю источник образа WPF во время выполнения с частотой 30 мс (30 кадров в секунду). Я получаю 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

1 Ответ

0 голосов
/ 27 ноября 2017

С помощью того же кода вы можете решить проблему с памятью, форсируя сборку мусора.Для этого поместите код ниже BitmapSource.Create.

//force garbage collection
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
...