Очистка памяти - C#
Формулировка задачи:
Доброго времени суток.
Прошу сильно не пинать за, возможно идиотский вопрос, но решения не нашел. Попросили написать небольшую программу именно на шарпе, решил помочь и уткнулся в проблему. Сам то пишу на плюсах, там таких проблем не возникает.
Собственно, небольшой кусок кода:
Не помогает ни null, ни Dispose(); Поскольку снятие скрина происходит часто, то программа умудряется отхватывать до 400 Мб, а потом чистит. bmp локален, нигде больше не светится. Есть ли человеческий способ удалить новый битмап. Не создавать битмап не вариант - другого метода переноса поверхности не нашел.
Пробовал с мсдн
так же не работает. Чего я не так делаю, или не понимаю?
А и еще - может объем откусываемой памяти как то в настройках указывается - visual studio для мну новая, может там чего упускаю.
Спасибо за внимание
public Surface CaptureScreen() { Bitmap bmp = null; Surface s = Surface.CreateOffscreenPlain(d, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, Format.A8R8G8B8, Pool.Scratch); d.GetFrontBufferData(0, s); bmp = new Bitmap(Surface.ToStream(s, SlimDX.Direct3D9.ImageFileFormat.Bmp)); bmp.Dispose(); // ??? КАК? return s; }
public void Dispose() { Dispose(true); GC.SuppressFinalize(this); }
Решение задачи: «Очистка памяти»
textual
Листинг программы
Surface s = sc.CaptureScreen(); var stream = Surface.ToStream(s, ImageFileFormat.Bmp); Bitmap bmp = new Bitmap(stream); stream.Dispose(); s.Dispose(); bmp.Dispose();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д