Нашей группы читать широко цитируются статьи http://blog.quantumbitdesigns.com/2008/07/22/wpf-cross-thread-collection-binding-part-4-the-grand-solution/ и спрашивает, если любой из вас может помочь с нашей проблемой:WPF: Запуск задач без вмешательства Animations Performance
Член команды имеет приложение WPF, который имеет анимацию работает. Проблема в том, что выполнение фоновых задач даже в разных потоках приводит к дрожанию анимации. Проблема в том, что создание регулярного потока с низким приоритетом не помогает, так как эти задачи в конечном итоге должны отображать данные в элементах пользовательского интерфейса. Например: У нас есть элемент управления, который показывает журналы того, что делает приложение. Существует отдельная DLL, которая имеет метод GetLogs, который возвращает список последних журналов. Мы активируем его, используя таймер, и каждые 500 м. Приложение получает новый список, который может содержать до 10000 записей. Пользовательский контроль журнала - это просто ListView, привязанный к ObservableCollection. Наше требование состоит в том, чтобы добавить каждую запись из списка, который мы получаем в Наблюдаемую коллекцию. Мы также проверяем, что коллекция не превысила предел, который мы ему дали (скажем, 100000 записей). Если он превышает предел, мы удаляем первые 10000 записей.
Теперь это можно сделать только в объекте диспетчера пользовательского интерфейса, поэтому наилучшим близким решением является использование BackGroundWorker. Но этот поток не имеет низкого приоритета, и приоритет не может быть установлен там. Мы задаемся вопросом, поможет ли это, поскольку мы понимаем, что поток отправляет элементы интерфейса с помощью метода Dispatcher.Invoke.
Так что для меня действительно параллельна добавлению каждой строки в наблюдаемую коллекцию с помощью Dispatcher.BeginInvoke (ThreadPriority.Low ......) Это замедляет отображение журнала, а анимация по-прежнему капризна.
Есть ли из-за проблем решение проблемы (производительность пользовательского интерфейса и фоновые задачи)?
Является ли неустойчивое поведение только при взятии данных из фоновой нити и представлении ее в пользовательском интерфейсе? – Nate
Какова природа анимации? – Jay
@Jay: индикатор прогресса –