Моя программа состоит из двух частей, в первом разделе мы создаем растровое изображение примерно так:
frameBitmap = new Bitmap(destWidth, destHeight, pConvertedFrame->linesize[0], PixelFormat.Format32bppPArgb, new IntPtr(pConvertedFrame->data_0));
эта часть работает хорошо, и здесь нет никаких проблем.
в секундуsection, то есть в функции события «OnPaint» для моего «userControl», будет использоваться frameBitmap, как показано ниже:
e.Graphics.DrawImage(frameBitmap, drawArea, x, y, width, height, GraphicsUnit.Pixel);
Я должен сказать, что мой элемент управления будет обновляться несколько раз.«OnPaint» поддерживается с этим атрибутом: [System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
и try{}catch{}
.но иногда поврежден с этим исключением: «Попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена».Я знаю, что "frameBitmap" поврежден.
хорошо, я исправил это с помощью этого решения;Вместо первого раздела используйте этот код:
Bitmap temp = new Bitmap(destWidth, destHeight, pConvertedFrame->linesize[0], PixelFormat.Format32bppPArgb, new IntPtr(pConvertedFrame->data_0));
frameBitmap = new Bitmap(temp);
Ну, теперь мой вопрос: почему?Я решил это, но я не нашел ни своего решения, ни своей проблемы, и я решил это совершенно креативно.но я не знаю, как это случилось;))
Спасибо за любую помощь.