У меня есть элемент управления (для WPF и Silverlight), представленный в виде столбцов. (Небольшая диаграмма). Я хочу написать приложение, которое измеряет производительность этого элемента управления. Я пытаюсь добавить точки в цикле и жду, пока точка будет отрисована.
В WPF работают такие:
//start measuring time
for (int i =10, i<100, i++){
chart.AddRandomPoint(i); //i - argument
System.Windows.Forms.Application.DoEvents();
}
//finish measuring time
Но в Silverlight невозможно использовать System.Windows.Forms.Application.DoEvents ().
Второй способ - использование DispatcherTimer:
dicpatcherTimer_Tick(object sender, EventArgs e){
chart.AddRandomPoint(i);
}
и подпишитесь на событие CompositionTarget.Rendering. В обработчике событий icrement counter.
Большое значение этого счетчика показывает хорошую производительность.
Мой вопрос:
Можно добавить точку, подождать, пока график будет отрисован, немедленно добавить еще одну точку и т. Д.
Является ли корректным второй способ (с использованием объекта DispatcherTimer и события CompositionTarget.Rendering). Может ли это показать производительность? (Мне нужно сравнить производительность до и после рефакторинга).