Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Help WPF, куда уходит память.

42K
27 мая 2009 года
dimetcm
10 / / 11.03.2009
если в цикле вызываю этот код - очень быстро уходит память. Подскажите куда, и как от этого избавиться.


//RightPanelSprite - Image Control
//rightBitmaps - массив BitmapImage
RightPanelSprite.Source = rightBitmaps[currentRightImage];
241
27 мая 2009 года
Sanila_san
1.6K / / 07.06.2005
Могу предположить, что проблема в использовании массива или в способе его использования. Покажите чуть больше кода, весь цикл.
42K
28 мая 2009 года
dimetcm
10 / / 11.03.2009
Цитата: Sanila_san
Могу предположить, что проблема в использовании массива или в способе его использования. Покажите чуть больше кода, весь цикл.



Вот код который вызывается в конструкторе

Код:
//rightImages - FileInfo[]
//rightBitmaps - BitmapImage[]
            rightImages = new DirectoryInfo("F:\\Images\\Right").GetFiles("*.png");
            rightBitmaps = new BitmapImage[rightImages.Length];
            for (int i = 0; i < rightImages.Length; i++)
            {
                rightBitmaps = new BitmapImage();
                rightBitmaps.BeginInit();
                rightBitmaps.UriSource = new Uri(rightImages.FullName);
                rightBitmaps.EndInit();
            }

currentRightImage = 0;


В цикле меняется текущая картинка:
Код:
if (currentRightImage >= rightImages.Length - 1)
                currentRightImage = 0;
            else
                currentRightImage++;
            RightImageSprite.Source = rightBitmaps[currentRightImage];

/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
Вот как сделал сейчас, все работает, но мне кажется не правильным то что каждая картинка загружается с диска (вместо того что бы их загрузить все сразу в память)
BitmapImage bmp = new BitmapImage();
                bmp.BeginInit();
                bmp.UriSource = new Uri(rightImages[currentRightImage].FullName);
                bmp.EndInit();
                RightPanelSprite.Source = bmp;

P.S.
Еще можно, как вариант, создать нужное количество Image Control'ов и менять им zIndex.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог