0
我使用XNA遊戲項目來創建3D場景的幀。但是,我使用MemoryStream時出現內存泄漏。下面的代碼被稱爲Draw函數的一部分。XNA - 保存幀時發生內存泄露
byte[] FrameSave()
{
int w = GraphicsDevice.PresentationParameters.BackBufferWidth;
int h = GraphicsDevice.PresentationParameters.BackBufferHeight;
//pull the picture from the buffer
int[] backBuffer = new int[w * h];
GraphicsDevice.GetBackBufferData(backBuffer);
//copy into a texture
Texture2D texture = new Texture2D(GraphicsDevice, w, h, false, GraphicsDevice.PresentationParameters.BackBufferFormat);
texture.SetData(backBuffer);
MemoryStream ms = new MemoryStream();
texture.SaveAsJpeg(ms, w, h); //MEMORYLEAK
byte[] zframe = ms.ToArray();
ms.Close();
ms.Dispose();
texture.Dispose();
return zframe;
}
任何幫助將不勝感激。
不知道這是否有幫助,但嘗試使用'using'語句作爲'MemoryStream'。 ('使用(MemoryStream ms = new MemoryStream())') – gunr2171
我試過了,但是它和以前一樣。 – ShirouWrath
難道是因爲你正在處理你的圖片後你的內存流? – gunr2171