protected override void DisposeNative() { base.DisposeNative(); if (ShouldRecreate) { NewInstance = new ImmediateRecreationObject(Handle, false); } }
public void EnsureConcurrencyResultsInCorrectDeregistration() { var handle = (IntPtr)446; var obj = new ImmediateRecreationObject(handle, true); Assert.Null(obj.NewInstance); Assert.Equal(obj, SKObject.instances[handle]?.Target); obj.Dispose(); Assert.True(SKObject.GetInstance <ImmediateRecreationObject>(handle, out _)); var newObj = obj.NewInstance; Assert.NotEqual(obj, SKObject.instances[handle]?.Target); Assert.Equal(newObj, SKObject.instances[handle]?.Target); newObj.Dispose(); Assert.False(SKObject.GetInstance <ImmediateRecreationObject>(handle, out _)); }