Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2008, 22:05   #1
darkstarx
Пользователь
 
Регистрация: 20.01.2008
Сообщений: 24
Вопрос

Будет ли освобождаться память из под массива точек в следующем коде:

Код:
public void Draw()
{
	Graphics Canvas = Graphics.FromImage(Image);
	Canvas.Clear(Color.White);
	Pen myPen = new Pen(Color.Black);
	Font myFont = new Font("Arial", 10);
	//Прорисовка объектов
	myPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
	myPen.Color = Color.Gray;
	DataTableReader dr = dsModel.Tables["OBJECTS"].CreateDataReader();
	x = 10;
	y = 10;
	width = 100;
	height = 50;
	while (dr.Read())
	{
		if (dr["X"].ToString() != "")
		{ x = Int32.Parse(dr["X"].ToString()); }
		if (dr["Y"].ToString() != "")
		{ y = Int32.Parse(dr["Y"].ToString()); }
		name = dr["NAME"].ToString();
		Point[] pts = new Point[] {
			new Point(x, y + height / 2), new Point(x + width / 2, y),
			new Point(x + width / 2, y), new Point(x + width, y + height / 2),
			new Point(x + width, y + height / 2), new Point(x + width / 2, y + height),
			new Point(x + width / 2, y + height), new Point(x, y + height / 2)
		};
		Canvas.DrawPolygon(myPen, pts);
		Canvas.DrawString(name, myFont, Brushes.Black, x, y - 10);
	}
	dr.Dispose();
	myFont.Dispose();
	myPen.Dispose();
	backCanvas.Dispose();
	Canvas.Dispose();
}
Если эту функцию берет на себя "сборщик мусора" фреймворка, а не приложение, тогда какой механизм работает, например, если я примерно такой же код напишу с соберу в Delphi, кто там будет "собирать мусор"? или Delphi (С++ - не важно) умеет "заставлять" свои приложения самостоятельно очищать неиспользуемые в коде области памяти в реальном времени?

Последний раз редактировалось merax; 28.02.2008 в 07:46.
darkstarx вне форума Ответить с цитированием
Старый 14.04.2008, 14:48   #2
viperfish
 
Регистрация: 14.04.2008
Сообщений: 7
По умолчанию

память освобождаться будет
очень хорошо и детально работа garbage collector-а описана у Рихтера:
http://www.ozon.ru/context/detail/id/3032556/

N.B. а нужно ли в прорисовке читать данные из базы данных? производительность наверное на высоте?
и ещё - гораздо более эффективно будет использовать GraphicsPath, записать в него все фигуры, и отобразить с помощью Graphics.DrawPath (FillPath)
viperfish вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
очистка экрана Артэс Общие вопросы C/C++ 17 07.04.2016 15:05
Очистка MEMO SG13 Общие вопросы Delphi 5 23.07.2008 21:56
Очистка памяти Senator Общие вопросы Delphi 1 28.06.2008 19:39
Очистка TImage TaTT DoGG Компоненты Delphi 2 14.05.2008 20:57
Очистка dbf. Ferro БД в Delphi 8 12.11.2007 17:27