diff --git a/src/Avalonia.Native/WindowImplBase.cs b/src/Avalonia.Native/WindowImplBase.cs index 2895145cf3..68dc72ad19 100644 --- a/src/Avalonia.Native/WindowImplBase.cs +++ b/src/Avalonia.Native/WindowImplBase.cs @@ -18,6 +18,7 @@ namespace Avalonia.Native { IInputRoot _inputRoot; IAvnWindowBase _native; + bool _isClosed; private object _syncRoot = new object(); private bool _deferredRendering = true; private readonly IMouseDevice _mouse; @@ -110,7 +111,11 @@ namespace Avalonia.Native _parent = parent; } - void IAvnWindowBaseEvents.Closed() => _parent.Closed?.Invoke(); + void IAvnWindowBaseEvents.Closed() + { + _parent._isClosed = true; + _parent.Closed?.Invoke(); + } void IAvnWindowBaseEvents.Activated() => _parent.Activated?.Invoke(); @@ -234,7 +239,11 @@ namespace Avalonia.Native public virtual void Dispose() { - _native.Close(); + if (!_isClosed) + { + _native.Close(); + } + _native.Dispose(); _native = null;