![]() |
Модераторы: gambit, Kefir, Partizan |
![]() ![]() ![]() |
|
wolfwood1010 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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 непонятно откуда он то ли после выполнения тела функции то ли перед ... в общем непонятно. что это такое может быть? и где копать? |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |