Does InvalidateVisual works in a lazy way?
c#, custom-controls, invalidation, rendering, wpf
Solution
The online help answers your question:
Online help for InvalidateVisual:
This method calls InvalidateArrange internally.
Online help for InvalidateArrange:
Invalidates the arrange state (layout) for the element. After the invalidation, the element will have its layout updated, which will occur asynchronously unless subsequently forced by UpdateLayout.
In other words: `InvalidateVisual` does not have an effect immediately; it waits until your current code has finished (unless you have calls to UpdateLayout).
You also can look at Microsoft's reference source: http://referencesource.microsoft.com/#q=UIElement.InvalidateArrange . You will see that `InvalidateArrange()` does not call any blocking code; it returns immediately.
Problem
If I call `InvalidateVisual` in my custom WPF control, when does the actual layout evaluation and rendering process happen? Immediately or - similarly as in WinForms - when I finish my processing?