public void SetBackBufferImage(SavedImage image) { lock (SyncRoot) { _backBuffer?.Dispose(); _backBuffer = image; if (image == null) { return; } if (_nonUiRedrawQueued) { return; } _nonUiRedrawQueued = true; Dispatcher.UIThread.Post( () => { lock (SyncRoot) { if (!_nonUiRedrawQueued) { return; } _nonUiRedrawQueued = false; } SetNeedsDisplayInRect(Frame); Display(); }, DispatcherPriority.Render); } }
protected override void Dispose(bool disposing) { if (disposing) { _backBuffer?.Dispose(); _backBuffer = null; } base.Dispose(disposing); }