У меня проблема с RenderTargetBitmap, поскольку я не могу заставить его постоянно получать обновленный рендер после того, как я изменяю связанные свойства в фоновом потоке.
Вот что у меня есть:
// Update a property on an INotifyPropertyChanged view model
// This runs on a background thread
viewModel.SomeBoundProperty += 10;
// Flush dispatcher queue (from http://stackoverflow.com/a/2596035/612510)
_lcd.Dispatcher.Invoke(() => {}, System.Windows.Threading.DispatcherPriority.Loaded);
// Render the updated control
_lcd.Dispatcher.Invoke(() =>
{
_lcd.Measure(new System.Windows.Size(240, 160));
_lcd.Arrange(new System.Windows.Rect(0, 0, 240, 160));
_lcd.UpdateLayout();
_renderTarget.Render(_lcd);
}
Увы, примерно половину времени я получаю отрисовку до того, как элемент управления обновляется новым значением, а в другой половине он обновляется правильно.
Насколько я понимаю, WPF автоматически отправляет уведомления об изменении свойств в поток пользовательского интерфейса. Как я могу гарантировать, что все эти отправленные уведомления обрабатываются до выполнения рендеринга? Этот код работает нормально, если я удостоверяюсь, что SomeBoundProperty
обновляется в потоке Dispatcher, но это далеко не идеально для этого конкретного приложения.
Какие-либо предложения?