Увеличение загрузки памяти изза динамического создания контролов.

Здравствуйте Коллеги!

Реализовал динамическое создание контролов (Edit, LookupControl, DateTimeControl) на карточке редактирования,в зависимости от исходного набора данных.В том же цикле когда они создаются им присваивается обработка событий. При закрытии карточки (OnClose) созданные контролы в цикле уничтожаются и от событий отписываюсь функцией Unsubscribe.

Проблема в том что чем чаще открываешь и закрываешь эту карточку редактирования, тем дольше она начинает "грузиться", т.е. все дольше и дольше происходит создание карточки.
в первый раз карточка открывается за секунду, на пятидесятый раз, карточка открывается уже секунд 10. И даже если переходить в другие разделы террасофт работает существенно медленней. Перезагрузка террасофта помогает, но это не выход.

и еще, если смотреть диспетчер задач то загрузка памяти процессом TSCRM.exe с каждым открытием динамической карточки увеличивается на 50-100кб

как решить эту проблему?

Нравится

3 комментария

Unsubscribe не решит проблему. Для загрузки элементов используйте GetNewItem. Также убедитесь, чтобы на это окно не было ссылок, потому что в таком случае память очищатся не будет.

"Гакало Игорь Александрович" написал:

Можете привести пример с GetNewItem?
какие ссылки вы имеете ввиду?

Пример с GetNewItem:

function GetUpdateQuery() {
	if (!Assigned(AccountAddress.UpdateQuery)) {
		var UpdateQuery = Services.<strong><em>GetNewItemByUSI</em></strong>('uq_AccountAddress');
		UpdateQuery.ColumnsValues.ItemsByName('IsPrimary').Value = false;
		AccountAddress.UpdateQuery = UpdateQuery;
	}
	return AccountAddress.UpdateQuery;
}

Пример ссылки:

ComponentsByName('btnOK')
Показать все комментарии