Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> тормозит рендер. 
:(
    Опции темы
wolfwood1010
  Дата 10.5.2012, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.1.2012

Репутация: нет
Всего: нет



есть некая функция занимающаяся рендером на image, работает она в отдельном потоке.
 void RenderImgs(object sender)
        {    
            while (true)
            {
                this.Dispatcher.Invoke((Action)delegate()
                {
                    this.RenderTargets();
                });

                Thread.Sleep(50);
            }
            
        }

тело функции выглядит приблизительно так
void RenderTargets()
        {
                Rect tmpR = RenderbleRect.RetRect(CurentX, CurentY, Zoom);

                CroppedBitmap cb = new CroppedBitmap(RenderbleRect.Src,
                            new Int32Rect((int)tmpR.Left, (int)tmpR.Top, (int)tmpR.Width, (int)tmpR.Height));


                DrawingVisual dv = new DrawingVisual();
                using (DrawingContext dx = dv.RenderOpen())
                {

                    dx.DrawImage(cb, new Rect(0, 0, PART_Image.ActualWidth, PART_Image.ActualHeight));

                   ....
                   ....
                }
  
                RenderTargetBitmap bmp = new RenderTargetBitmap((int)PART_Image.ActualWidth, (int)PART_Image.ActualHeight, 96.0, 96.0, PixelFormats.Pbgra32);

                bmp.Render(dv);
                PART_Image.BeginInit(); //вроде это даже и не нужно
                PART_Image.Source = bmp;
                PART_Image.Stretch = Stretch.Fill;
                PART_Image.EndInit();   //как и это



                cb = null;

                    FreeMem();
          
            }

// нужен иначе прилага съедает всю память.       
        void FreeMem()
        {
            GC.Collect(3);
            GC.WaitForPendingFinalizers();
            GC.Collect(3);
        }


в целом все неплохо рендер выполняется гдето за 100ms задерка перед следующим рендером 50.
но помимо этого бывает (гдето раз в 10-20 рендеров) ещё некий лаг в 500-600 ms непонятно откуда он то ли после выполнения тела функции то ли перед ... в общем непонятно.

что это такое может быть? и где копать?



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0944 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.