我正在开发一个C#应用程序,它可以显示来自相机的实时图像。
以下代码片段的问题是:当在线程中连续执行此函数时,我会在Marshal.Copy中遇到AccessViolationException。但是,当运行一次时(我得到一个静态图像),它可以成功运行。我猜测这可能与某些内存损坏问题有关。你有什么想法/建议来解决这个问题吗?
private Image ByteArrayToImage(byte[] myByteArray)
{
if (myByteArray != null)
{
MemoryStream ms = new MemoryStream(myByteArray);
int Height = 504;
int Width = 664;
Bitmap bmp = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.WriteOnly, bmp.PixelFormat);
Marshal.Copy(myByteArray, 0, bmpData.Scan0, myByteArray.Length);
bmp.UnlockBits(bmpData);
return bmp;
}
return null;
}