バックグラウンド スレッドでバインドされたプロパティを変更した後、更新されたレンダリングを一貫して取得できないという点で、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 はプロパティ変更通知を UI スレッドに自動的にディスパッチします。レンダリングを実行する前に、これらのディスパッチされた通知がすべて処理されるようにするにはどうすればよいですか? Dispatcher スレッドで更新されていることを確認すれば、このコードは正常に機能しSomeBoundProperty
ますが、この特定のアプリケーションには理想的とは言えません。
助言がありますか?