diff --git a/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs b/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs index b89649d591..ccb889ece9 100644 --- a/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs +++ b/src/Avalonia.Visuals/Rendering/DeferredRenderer.cs @@ -35,6 +35,7 @@ namespace Avalonia.Rendering private IRef _currentDraw; private readonly IDeferredRendererLock _lock; private readonly object _sceneLock = new object(); + private readonly Action _updateSceneIfNeededDelegate; /// /// Initializes a new instance of the class. @@ -59,6 +60,7 @@ namespace Avalonia.Rendering Layers = new RenderLayers(); _renderLoop = renderLoop; _lock = rendererLock ?? new ManagedDeferredRendererLock(); + _updateSceneIfNeededDelegate = UpdateSceneIfNeeded; } /// @@ -336,7 +338,7 @@ namespace Avalonia.Rendering // So we are scheduling an update call so UI thread could prepare a scene before // the next render timer tick if (!recursiveCall && !isUiThread) - Dispatcher.UIThread.InvokeAsync(UpdateSceneIfNeeded, DispatcherPriority.Render); + Dispatcher.UIThread.Post(_updateSceneIfNeededDelegate, DispatcherPriority.Render); // Indicate that we have updated the layers return (sceneRef.Clone(), true);