PDA

View Full Version : مشکل با Memory Stream



NasimBamdad
جمعه 29 آذر 1398, 09:40 صبح
سلام و وقت بخیر

برای اسکن عکس از طریق موبایل در WinForms از برنامه IP Webcam استفاده می کنم،مشکلی که دارم اینه بعد چندتا عکس گرفتن هرچند 8 گیگ رم و هارد SSD دارم اررور out of memory برخورد می کنم و برنامم بسته میشه و ...

به نظر شما باید بعد از هر بار عکس گرفتن MemoryStream پاک بشه ؟ راه حل چیه ؟

TakePictureDialog pictureDialog = new TakePictureDialog();
TakePictureForm pictureForm = new TakePictureForm(pictureDialog);
pictureForm.Size = new System.Drawing.Size(800, 600);
if (pictureForm.ShowDialog() == DialogResult.OK)
{
Image image = pictureDialog.Image;
using (var stream = new MemoryStream())
{
image.Save(stream, ImageFormat.Jpeg);
peItemImage.EditValue = stream.ToArray();
}
}


ممنونم

the king
جمعه 29 آذر 1398, 20:56 عصر
سلام و وقت بخیر

برای اسکن عکس از طریق موبایل در WinForms از برنامه IP Webcam استفاده می کنم،مشکلی که دارم اینه بعد چندتا عکس گرفتن هرچند 8 گیگ رم و هارد SSD دارم اررور out of memory برخورد می کنم و برنامم بسته میشه و ...

به نظر شما باید بعد از هر بار عکس گرفتن MemoryStream پاک بشه ؟ راه حل چیه ؟

TakePictureDialog pictureDialog = new TakePictureDialog();
TakePictureForm pictureForm = new TakePictureForm(pictureDialog);
pictureForm.Size = new System.Drawing.Size(800, 600);
if (pictureForm.ShowDialog() == DialogResult.OK)
{
Image image = pictureDialog.Image;
using (var stream = new MemoryStream())
{
image.Save(stream, ImageFormat.Jpeg);
peItemImage.EditValue = stream.ToArray();
}
}


ممنونم
قطعا هر موردی که Dispose شدنی است و امکان آزاد سازیش رو دارید باید آزاد بشه.
البته MemoryStream تون رو که با using که بهترین شیوه ممکنه دارید Dispose می کنید و نمیتونه ایراد از اون باشه. اما مثلا image باید Dispose میشد که نشده.
اون image و هر شیء Dispose شدنی دیگری رو هم یا در انتها image.Dispose کنید یا با همون شیوه using که برای stream بکار بردید و بهتر از Dispose هم هست آزاد کنید.