Очистка памяти - 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();